问题:
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 ;
}