码迷,mamicode.com
首页 > 其他好文 > 详细

UITextField 监听内容变更解决方案

时间:2015-07-08 14:21:48      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

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




UITextField 监听内容变更解决方案

标签:

原文地址:http://www.cnblogs.com/madordie/p/4629861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!