我有一个视图控制器,它基本上是一个包含多个UITextFields和UITextView的表单,嵌入在UIScrollView中。当UITextField成为第一响应者时,滚动视图会自动移动到焦点字段,这相信是本主题第一个答案中解释的行为:
Disable UIScrollView scrolling when UITextField becomes first responder
当第一个响应者是UITextView时,这不会发生,我不知道为什么以及如何修复它。
第二个问题是,当显示键盘时,如果UITextView不在视图中,则滚动视图不会滚动(因为它被新显示的键盘隐藏)。我实现了Apple关于如何管理键盘的文档代码:
为textViews添加了另一个名为activeView的activeField变量(在TextView的beginEditing中初始化,在endEditing中设置为nil,在显示键盘时根据它的框架scrollToVisible)。这里的问题是在KeyboardWasShown之后调用UITextView中的beginEditing,因此activeView没有初始化,因此不会滚动。出于某种原因,对于UITextFields,之前调用beginEditing,这是预期的行为。
如何滚动到UITextView并且它是第一个响应者,当键盘显示并隐藏它时,如何移动到它?
答案 0 :(得分:0)
滚动显示UIScrollView
中的任何内容
scrollRectToVisible:/*frame of object you want to show*/ animated:YES
订阅UITextViewTextDidBeginEditingNotification
并在获得时调用上述方法。