无论我尝试更改哪种设置,resignFirstResponder
始终强制文字滚动到UITextView
的顶部
我希望键盘消失,但内容偏移保持不变。
非常感谢任何解决方案。
答案 0 :(得分:2)
在viewDidLoad
中[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
添加此功能
- (void)keyboardWillHide:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
NSTimeInterval animationDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:animationDuration animations:^{
[_textView scrollRangeToVisible:NSMakeRange([_textView.text length], 0)];
}];
}
答案 1 :(得分:2)
这是由iOS 8中的UIScrollView
错误引起的。希望在iOS 9中修复它。我只假设它是一个错误,因为resignFirstResponder
在iOS 7中没有这种行为。也许它是一个功能。
我发现阻止resignFirstResponder
和setText
重置contentOffset
的唯一方法如下:
<强>夫特:强>
textView.layoutManager.allowsNonContiguousLayout = false
目标C
textView.layoutManager.allowsNonContiguousLayout = NO;
我认为它的一个错误的另一个原因是因为文档说它默认设置为NO,但是当你打印掉变量而没有设置它时,它是真的。
有关NSLayoutManager
的更多信息,请here