UITextField切换中文输入,选中所输入的中文时,iOS7不会调用textField:shouldChangeCharactersInRange:replacementString协议方法。
来源:互联网 发布:网络分层物理层 编辑:程序博客网 时间:2024/05/22 11:35
UITextField切换中文输入,在键盘中输入完后,选中键盘中mark的中文字符时,iOS7中UITextField不会调用如下协议方法。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)<a target=_blank name="baidusnap4"></a><strong style="color:black;background-color:#ff66ff">range</strong> replacementString:(NSString *)string;
1、利用通知中心监听UITextFieldTextDidChangeNotification。
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:) name:UITextFieldTextDidChangeNotification object:self];
- (void)textFiledEditChanged:(NSNotification *)notification{ if ([notification.object isKindOfClass:[EzvizTokenTextField class]]) { EzvizTokenTextField *textField = notification.object; UITextRange *selectedRange = [textField markedTextRange]; //获取高亮部分 UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; if (!position) { self.ezvizTokenTextFieldTextLength = [textField.text length]; } }}
当键盘中有mark的中文字符时,则根据UITextField实例方法markedTextRange可以获取开始位置以及长度,此时,只要没有选中被mark的字符时,textFiled.text 的 length是不会改变的。只有当选中被mark的字符时,markedTextRange返回的开始位置以及长度为0,则UITextPosition则为nil,此时说明textField.text 的 length改变。
2、通过KVO监听textField.text 的length。代码如下:
[self addObserver:self forKeyPath:@"ezvizTokenTextFieldTextLength" options:NSKeyValueObservingOptionNew context:NULL];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object <a target=_blank name="baidusnap1"></a><strong style="color:black;background-color:#A0FFFF">change</strong>:(NSDictionary *)<strong style="color:black;background-color:#A0FFFF">change</strong> context:(void *)context{ if (object == self && [keyPath isEqualToString:@"ezvizTokenTextFieldTextLength"]) { //DDLogInfo(@"ezvizTokenTextFieldTextLength: %d", self.ezvizTokenTextFieldTextLength); //if (self.ezvizTokenTextFieldTextLength) { if (delegate && [delegate respondsToSelector:@selector(textFieldDidEndChanged:)]) { [delegate textFieldDidEndChanged:self]; } } } else { [super observeValueForKeyPath:keyPath ofObject:object <strong style="color:black;background-color:#A0FFFF">change</strong>:<strong style="color:black;background-color:#A0FFFF">change</strong> context:context]; }}
从而可以达到在iOS7下监听UITextField输入框内字符变化。
0 0
- UITextField切换中文输入,选中所输入的中文时,iOS7不会调用textField:shouldChangeCharactersInRange:replacementString协议方法。
- UITextField切换中文输入,选中所输入的中文时,iOS7不会调用textField:shouldChangeCharactersInRange:replacementString协议方法。
- textField:shouldChangeCharactersInRange:replacementString:
- textField:shouldChangeCharactersInRange:replacementString: 限制字数,替换字符串
- 限定textfield输入中文字数
- Flash的输入框TextField无法输入中文的问题
- 输入中文的方法
- UITextField中文输入法输入时对字符长度的限制
- UITextField限制输入中文字数
- 在Xcode的模拟器中的textField中输入中文
- Appium输入中文的方法
- 深入理解iOS API系列(一) textField:shouldChangeCharactersInRange:replacementString:
- 深入理解iOS API系列(一) textField:shouldChangeCharactersInRange:replacementString:
- 深入理解iOS API系列(一) textField:shouldChangeCharactersInRange:replacementString:
- ios textfield限制中文输入长度
- UITextField只限中文、英文、数字输入和限制字符个数的实现方法
- 使用UITextView或UITextField分类方法解决中文输入问题的bug
- iOS开发陷阱之UITextField中文输入长度的限制
- LCD显示器更换灯管作业
- 保存基本信息并展示
- Python循环语句
- HttpClient session
- hdu 1462 Word Crosses
- UITextField切换中文输入,选中所输入的中文时,iOS7不会调用textField:shouldChangeCharactersInRange:replacementString协议方法。
- SVM入门(十)将SVM用于多类分类
- Linux下单独安装Oracle客户端
- 蓝脸的窦尔敦草泥马,红脸的关公床上趴 ,黄脸的几把,白脸的菊花,黑脸的张飞来~姨~妈~啊~啊~啊
- java协议标准与规范
- 关于JSF/PF+Hibernate+JPA(web开发中)数据的添加,更新,以及界面数据显示小结(图片待传)
- #1107 : Shortest Proper Prefix
- 硬脂酸钙产物格量
- AndroidStudio安装和配置