ios UITextView 输入中文时文字跳动问题
当输入中文文字多于显示的textview框时,最后一行的文字有时候会因为输入的时候而跳动把最后一行的文字盖住一半,再输入时却又跳起来显示
这是什么诡异的bug,在调整公司项目的时候,出现了这个问题(♯▼皿▼)
以前没碰到过.特么的我还以为是公司自定义的textview有问题,重写了之后还是存在这个问题,于是我新建了个新的项目专门调试这个textview.
调试完我只想说一个字(`皿´#)@"操操操操操操操操操操操操操操操操操!!!";
百度后才知道原来tm的是ios7本身bug!!
但是我...我用的是ios8哇哇哇哇哇哇哇哇哇哇哇哇,操尼玛的.(╯‵□′)╯︵┴─┴
后来在百度上找到了这个,原谅我英语不好不能找谷歌... (>_<、)
下面是转自某博,地址:http://my.oschina.net/joanfen/blog/140143 ps:侵删(′ ︿ `)
iOS7光标问题
PS:有网友遇到textView在ios7上出现编辑进入最后一行时光标消失,看不到最后一行,变成盲打,stackOverFlow网站上有大神指出,是ios7本身bug,加上下面一段代码即可(网友调试得出,在此mark一下,有问题,欢迎大神们指出)
<span style="color:#3366ff;"><span style="font-size:10px;">-(void)textViewDidChange:(UITextView *)textView {
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];
}];
}
}</span></span>
bug是这样的,粘贴完文字...会导致文字后方出现一大片空白,需要人工滑动一下,才回到上面文字的最后一行光标处,粘贴的文字越多空白也会越多...
到现在还没找到解决的方法,虽然大神的方法是不会盖住后面一行的文字,但还是会有小跳动.(/ˍ・、)
已经找到解决方法:
如下
textView.layoutManager.allowsNonContiguousLayout = NO;
这句代码设置了 UITextView 中的 layoutManager(NSLayoutManager) 的是否非连续布局属性,默认是 YES,设置为 NO 后 UITextView 就不会再自己重置滑动了。
在这个博主里找到的
http://www.isaced.com/post-266.html