所以我的iOS应用程序有一个UIScrollview设置在故事板上使用自动布局的顶部,底部,领先和尾随约束绑定到超级视图。在scrollview里面我有stackview和多个垂直堆叠的UITextviews。 scrollview的内容设置很好,我甚至可以上下滚动。UITextview键盘处理,当它嵌入在UIScrollView
现在,我的问题来了键盘处理。我处理苹果的文档中推荐的键盘同样的方式:Apple's Keyboard handling documentation
有问题如下所示仅作参考,但它非常简单,只是苹果的例子的复制粘贴的特定代码:
func keyboardDidShow(notification: NSNotification){
var info = notification.userInfo!
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height, 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets
var aRect : CGRect = self.view.frame
aRect.size.height -= keyboardSize!.height
if self.activeTextView != nil {
if (!aRect.contains(self.activeTextView!.bounds)){
self.scrollView.scrollRectToVisible(self.activeTextView!.frame, animated: true)
}
}
}
我键盘处理代码适用于UITextFields,但它不适用于UITextFields。 self.scrollView.scrollRectToVisible(self.activeTextView!.frame, animated: true)
被调用,但不会发生滚动。
我研究了一下,发现,苹果不建议嵌入的UITextView一个UIScrollView内:Placing a text view inside of a scroll view
配售滚动视图的内部文本视图。文本视图处理自己的滚动。您不应该在滚动视图中嵌入文本视图对象。如果这样做,可能会导致意外的行为,因为两个对象的触摸事件可能混淆并被错误地处理。
但是,我真的需要这个“自动”滚动到隐藏文本视图,以使用与UITextFields相同的方式。有什么建议么??
PS:我应该提到,我不介意禁用UITextViews中的滚动操作,因为我已经使用自动布局自动调整UITextViews以适合其内容。
看起来像一个很好的图书馆,虽然它会是我的用例矫枉过正。也许是为了更大的项目。但对于我的用例KevinM的答案效果很好。 –