我一直在我的视图控制器中使用以下代码,在键盘显示时更新UITextView的内容偏移量:
在键盘显示时,手动滚动UITextView的内容到底部,使其正确地停在键盘顶部的正上方。然而,-[UITexView scrollRangeToVisible:]似乎不再考虑键盘的存在。
在iOS 6中,文本视图会滚动直到指定范围显示在键盘正上方。
在iOS 7中,可见性似乎现在基于文本视图的框架而不是内容插图,就像以前一样。因此,只有当范围延伸到框架下方时,视图才会滚动,然后它只会滚动足够使该范围在文本视图底部可见。
从视觉上讲,这里发生了什么。我为我的文本视图构建了一个内联搜索,带有控件可以在结果之间跳转(类似于在Safari中搜索)。因此,在文本视图这里显示搜索结果中,当用户点击“下一个”按钮时,青色选择将循环浏览结果。当用户到达第七个结果时,视图会滚动,直到它可见。
当用户使用键盘(来自UISearchBar)在同一搜索结果中向上,当用户到达第五个搜索结果时,它将滚动到键盘正上方。但仅限于iOS 6。在iOS 7中,直到进入第七个搜索结果才会发生滚动,就像在非键盘情况下一样,即使这样,它也会滚动相同的量,因此它只能在文本视图框架底部下方可见。
- (void)keyboardWasShown:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
UIEdgeInsets contentInsets = UIEdgeInsetsMake( 0.0, 0.0, keyboardRect.size.height, 0.0 );
self.textView.contentInset = contentInsets;
self.textView.scrollIndicatorInsets = contentInsets;
}
在键盘显示时,手动滚动UITextView的内容到底部,使其正确地停在键盘顶部的正上方。然而,-[UITexView scrollRangeToVisible:]似乎不再考虑键盘的存在。
在iOS 6中,文本视图会滚动直到指定范围显示在键盘正上方。
在iOS 7中,可见性似乎现在基于文本视图的框架而不是内容插图,就像以前一样。因此,只有当范围延伸到框架下方时,视图才会滚动,然后它只会滚动足够使该范围在文本视图底部可见。
从视觉上讲,这里发生了什么。我为我的文本视图构建了一个内联搜索,带有控件可以在结果之间跳转(类似于在Safari中搜索)。因此,在文本视图这里显示搜索结果中,当用户点击“下一个”按钮时,青色选择将循环浏览结果。当用户到达第七个结果时,视图会滚动,直到它可见。
当用户使用键盘(来自UISearchBar)在同一搜索结果中向上,当用户到达第五个搜索结果时,它将滚动到键盘正上方。但仅限于iOS 6。在iOS 7中,直到进入第七个搜索结果才会发生滚动,就像在非键盘情况下一样,即使这样,它也会滚动相同的量,因此它只能在文本视图框架底部下方可见。
这是iOS 7中已知的更改吗?我正在使用自动布局,所以我要尝试的下一件事是调整文本视图的底部间距约束,以缩小整个视图以避免问题,但是想检查是否有方法在iOS 7下仍然使用我的现有代码。