iOS开发—技巧总结(二)

2017-01-14 10:21:12来源:http://www.jianshu.com/p/182dc52c4eb1作者:Jeavil_Tang人点击

文本编辑控件
UITextView

UITextview 有一个很坑的地方,就是你点击键盘输入完成按钮是无法结束输入并收起键盘的,也就是说他不会直接走下面的代理方法:


- (void)textViewDidEndEditing:(UITextView *)textView{
}

无论你怎么点击完成按钮它总是会以换行的形式展现给你。
所以请你不要把时间浪费在怀疑自己是否为 UITextView 设置了代理或者质疑Xcode是否出了问题。要想实现点击完成按钮收起键盘,那么请换个方式,如下:


在 UITextView 的 shouldChangeTextInRange 代理方法中监听是否输入了换行符 ‘/n’ 如果键入了换行符那就收起键盘结束输入


- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if ([text isEqualToString:@"/n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}

程序执行到[textView resignFirstResponder] 标志着输入完成,shouldChangeTextInRange 代理方法会返回 NO ,不能再改变 textview 中的 text ,意思该textView可以结束编辑了。因此接下来才会走 - (void)textViewDidEndEditing:(UITextView *)textView 来结束编辑


限制 UITextView 或 UItextField 的输入字数

说到限制UITextView的字数我们很容易的会想到


- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
}

说到限制UITextField字数会想到类似的方法


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
-
}

但你尝试一下就会发现这两个方法并不能完全达到限制字数的作用,比如:


输入中文达到规定上限,你继续点击联想出来的中文依然会显示在UITextField 或 UITextView 中
输入文字达到上限时,如果你点击了联想字符后你还可以输入Emoji表情

不信你试试啊!!!


为了解决这个问题我下面方法

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台