记一次iOS UITextView坑

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

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

 if (IOS7_And_Later) {           
   self.automaticallyAdjustsScrollViewInsets = NO;    
}

坑2: iOS7及以上的版本上,UITextView输入中文时,在输入多行后,光标有时会上下跳动,输入文字的时候内容有时会往上跳,光标都显示不出来。

记得这个bug在我做IM项目聊天输入框的时候坑了我好几天,不得已找一些非正常的方法解决
。从网上找的各种解决方案都不行。
解决方案:

- (void)textViewDidChangeSelection:(UITextView *)textView    
{  
   if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
      CGRect r = [textView caretRectForPosition:textView.selectedTextRange.end];            
      CGFloat caretY =  MAX(r.origin.y - textView.frame.size.height + r.size.height + 8, 0);
   if (textView.contentOffset.y < caretY && r.origin.y != INFINITY) {
         textView.contentOffset = CGPointMake(0, caretY);
     }
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS 开发中你是否遇到这些经验问题(一) - CocoaChina_让移动开发更简单 iOS 8个实用小技巧(总...
    lixiaoshuai阅读 975评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,294评论 4 61
  • “ 凭什么我要永远对你保持不灭的热情毕竟你先离开[em]e7155[/em] ”
    稀饭和番茄阅读 224评论 0 0
  • 导语 「思维导图」最早是由英国心理学家「东尼·博赞」发明,他曾因帮助查尔斯王子提高记忆力而被誉为英国的“记忆力之父...
    bobmeek阅读 1,370评论 2 5
  • 喜亭阅读 223评论 7 7