0

我有一个视图控制器,它基本上是一个包含多个 UITextField 和 UITextView 的表单,嵌入在 UIScrollView 中。当 UITextField 成为第一响应者时,滚动视图会自动移动到焦点字段,这被认为是本主题第一个答案中解释的行为:

当 UITextField 成为第一响应者时禁用 UIScrollView 滚动

但是,当第一响应者是 UITextView 时,不会发生这种情况,而且我不确定为什么以及如何修复它。

第二个问题是,当显示键盘时,如果 UITextView 不在视图中,则滚动视图不会滚动(因为它被新显示的键盘隐藏了)。我实现了有关如何管理键盘的 Apple 文档的代码:

http://developer.apple.com/library/ios/#DOCUMENTATION/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

并为textViews添加了另一个名为activeView的activeField变量(在TextView的beginEditing中初始化,在endEditing中设置为nil,在显示键盘时根据它的框架scrollToVisible)。这里的问题是UITextView中的beginEditing是在keyboardWasShown之后调用的,所以activeView没有初始化,因此不会滚动。出于某种原因,对于 UITextFields,beginEditing 之前被调用,这是预期的行为。

如何滚动到 UITextView 并且它是第一响应者,当显示键盘并隐藏它时如何移动到它?

4

1 回答 1

0

滚动显示UIScrollViewdo中的任何内容

scrollRectToVisible:/*frame of object you want to show*/ animated:YES

获取时订阅UITextViewTextDidBeginEditingNotification并调用上述方法。

于 2012-08-15T14:38:47.987 回答