一、ios7中,UITextView有个小bug:html
当输入内容到textView底部,这个时候点击键盘上面换行,textView不会随着光标移动下去,在网上查了一下,找到解决方案:(参考:http://stackoverflow.com/questions/18966675/uitextview-in-ios7-clips-the-last-line-of-text-string/19277383#19277383)ios
- (void)textViewDidChange:(UITextView *)textView { if (isIOS7) { CGRect line = [textView caretRectForPosition: textView.selectedTextRange.start]; CGFloat overflow = line.origin.y + line.size.height - ( textView.contentOffset.y + textView.bounds.size.height - textView.contentInset.bottom - textView.contentInset.top); if ( overflow > 0 ) { // We are at the bottom of the visible text and introduced a line feed, scroll down (iOS 7 does not do it) // Scroll caret to visible area CGPoint offset = textView.contentOffset; offset.y += overflow + 7; // leave 7 pixels margin // Cannot animate with setContentOffset:animated: or caret will not appear [UIView animateWithDuration:.2 animations:^{ [textView setContentOffset:offset]; }]; } } }
其中isIOS7为判断是不是ios7系统。app
2、ios7和ios8上面,输入textview底部时候,收起键盘,文字会滑动到一个随机的位置,(还会有其余动做引发),若是想把光标保留在底部不动,能够作以下设置(参考:http://www.isaced.com/post-266.html) 布局
inputTextView.layoutManager.allowsNonContiguousLayout = NO;
这个属性的含义,我没具体查太多,文章说这么说的:post
"这句代码设置了 UITextView 中的 layoutManager(NSLayoutManager) 的是否非连续布局属性,默认是 YES,设置为 NO 后 UITextView 就不会再本身重置滑动了。"ui
本身去写的时候,发现苹果代码注释中写的allowsNonContiguousLayout的默认值是NO,本身打断点看了一下,发现是注释写错了,第一次碰见苹果注释写错的状况- -spa
3、在ios7中,UITextView的setText:方法不会触发 UITextViewTextDidChangeNotification的通知(这是以前的笔记,如今不知道什么状况)code