
最近在项目中遇到UITextView在ios7上出现编辑进入最后一行时光标消失,看不到最后一行,变成盲打,stackOverFlow网站上有大神指出,是ios7本身bug,加上下面一段代码即可:
1 -(void)textViewDidChange:(UITextView *)textView {
2 CGRect line = [textView caretRectForPosition:
3 textView.selectedTextRange.start];
4 CGFloat overflow = line.origin.y + line.size.height
5 - ( textView.contentOffset.y + textView.bounds.size.height
6 - textView.contentInset.bottom - textView.contentInset.top );
7 if ( overflow > 0 ) {
8 // We are at the bottom of the visible text and introduced a line feed, scroll down (iOS 7 does not do it)
9 // Scroll caret to visible area
10 CGPoint offset = textView.contentOffset;
11 offset.y += overflow + 7; // leave 7 pixels margin
12 // Cannot animate with setContentOffset:animated: or caret will not appear
13 [UIView animateWithDuration:.2 animations:^{
14 [textView setContentOffset:offset];
15 }];
16 }
17 }