解决聊天输入框一直跳动的bug

来源:互联网 发布:网络威胁别人什么罪 编辑:程序博客网 时间:2024/05/15 13:26

坑1:

    iOS7及以上的版本上,UITextView出现这样的问题:弹出键盘时,没输入任何文字,但是光标位置不是在最上方。

    解决方案: iOS7以后新增了一个属性automaticallyAdjustsScrollViewInsets,将其置为NO即可。别忘了加版本判断。

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. if (IOS7_And_Later) {  
  2.         self.automaticallyAdjustsScrollViewInsets = NO;  
  3.     }  

坑2:

    iOS7及以上的版本上,UITextView输入中文时,在输入多行后,光标有时会上下跳动,输入文字的时候内容有时会往上跳,光标都显示不出来。这个bug坑死好多人啊,特别是做聊天输入框的时候,不得已找一些非正常的方法解决。从网上找的各种解决方案都不行。

    解决方案:

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. - (void)textViewDidChangeSelection:(UITextView *)textView  
  2. {  
  3.     //fix ios7 bug (modified by 老岳).  
  4.     if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {  
  5.         CGRect r = [textView caretRectForPosition:textView.selectedTextRange.end];  
  6.         CGFloat caretY =  MAX(r.origin.y - textView.frame.size.height + r.size.height + 80);  
  7.         if (textView.contentOffset.y < caretY && r.origin.y != INFINITY) {  
  8.             textView.contentOffset = CGPointMake(0, caretY);  
  9.         }  
  10.     }  
  11. }  
0 0
原创粉丝点击