UITextField 监听内容变更解决方案

问题:
1、当输入中文时候代理方法是无法监听到选择文字的情况。
     解决办法:
     思路:" @interface UITextField : UIControl "
       ->     [ self . inputTextField addTarget : self action : @selector (textFieldChange:) forControlEvents : UIControlEventEditingChanged ];
     使用textFieldChange:来替代代理的 textField: shouldChangeCharactersInRange: replacementString:
2、 当输入英文时候,会出现备选英文单词,点击return时候输入框依旧会变更,英文联想单词收键盘时默认会更改其内容,但是均无法得到回调。
     解决办法:
     思路:代理中有 textFieldShouldReturn:方法
     ->      textFieldShouldReturn: 方法中再次手动调用textFieldChange:
     ->      textFieldShouldEndEditing: 方法中再次手动调用textFieldChange:

3、默认边框太黑,不符合应用整体色调,遂更改之。问题来了,layer画的边框紧贴字体,并没有直接调节的方法。
     解决办法:
     思路:最简洁明了的方法:在前面追加两个空格!
     ->     协调代理方法进行补充对空格进行控制。
     代码段1 如下:



我是代码段1:
#pragma make - <UITextFieldDelegate>
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
   
   
NSMutableString *currentText = [textField. text mutableCopy ];
    [currentText
replaceCharactersInRange :range withString :string];
   
   
NSLog ( @"%@" , currentText);
   
if ([currentText isEqualToString : @" " ]) {
       
return NO ;
    }
    [
self tableViewResetResultDataArray : @[] text :currentText];
    [
self . resultTableView setContentOffset : CGPointZero animated : YES ];
   
return YES ;
}
- (
BOOL )textFieldShouldBeginEditing:( UITextField *)textField {
    textField.
text = textField. text . length > 0 ?textField. text : @"  " ;
   
return YES ;
}
- (
BOOL )textFieldShouldEndEditing:( UITextField *)textField {
   
if ([textField. text isEqualToString : @"  " ]) {
        textField.
text = nil ;
    }
   
return YES ;
}



 


转载于:https://www.cnblogs.com/madordie/p/4629861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值