UITextField事件

来源:互联网 发布:40本网络禁书 下载 编辑:程序博客网 时间:2024/05/17 18:11

1.delegate

//设置textField是否允许编辑

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;       // return NO to disallow editing.

//进入编辑状态

- (void)textFieldDidBeginEditing:(UITextField *)textField;          // became first responder

//设置textField是否允许结束编辑

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;         // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end

//退出编辑状态(即便你设置了不允许结束编辑,在某些情况下也有可能退出编辑状态)

- (void)textFieldDidEndEditing:(UITextField *)textField;             // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called

//监控是否改变当前输入的字符,yes为改变,no为默认不改变

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text

//在点击clear按钮的时候进入,询问是否清除。返回NO为忽视清除按钮,不清除。

- (BOOL)textFieldShouldClear:(UITextField *)textField;              // called when clear button pressed. return NO to ignore (no notifications)

//点击键盘return按钮的时候,回调此方法,设为NO的时候会忽视return按钮的操作

- (BOOL)textFieldShouldReturn:(UITextField *)textField;             // called when 'return' key pressed. return NO to ignore.


2.notification

//类似textFieldDidBeginEditing

UIKIT_EXTERNNSString *const UITextFieldTextDidBeginEditingNotification;

//类似textFieldDidEndEditing

UIKIT_EXTERNNSString *const UITextFieldTextDidEndEditingNotification;

//

UIKIT_EXTERNNSString *const UITextFieldTextDidChangeNotification;


3.限制输入字符数:

-(void)viewWillAppear:(BOOL)animated

{

     [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(notificationTextFieldValueChange:)name:UITextFieldTextDidChangeNotificationobject:txfEdit];

}


-(void)notificationTextFieldValueChange:(NSNotification *)notification

{

   UITextField * textField = (UITextField *)txfEdit;

   NSInteger kMaxLength = 12;

   UITextRange * selectedRange = [textField markedTextRange];

   QLLog(@"selectedRange:%@",selectedRange);

   NSString * newText = [textField textInRange:selectedRange];

   QLLog(@"newText:%@",newText);

    

   NSString *toBeString = textField.text;

    NSString *lang = [[UITextInputModecurrentInputMode] primaryLanguage];// 键盘输入模式

    if([langisEqualToString:@"zh-Hans"]) {//简体中文输入,包括简体拼音,健体五笔,简体手写

       //获取高亮部分

       UITextPosition * position =[textField positionFromPosition:selectedRange.startoffset:0];

       if(!position) {

            //没有高亮选择的字,则对已输入的文字进行字数统计和限制

           if(toBeString.length > kMaxLength) {

                textField.text = [toBeStringsubstringToIndex:kMaxLength];

            }

        }else{

            //有高亮选择的字符串,则暂不对文字进行统计和限制

        }

    }

    //中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

   else{

       if(toBeString.length > kMaxLength) {

            textField.text= [toBeStringsubstringToIndex:kMaxLength];

        }

    }

    

}




0 0
原创粉丝点击