当它是第一个响应者时,无法在UIScrollView中移动UITextView

时间:2012-08-15 14:22:55

标签: objective-c ios mobile uitextview

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

Disable UIScrollView scrolling when UITextField becomes first responder

当第一个响应者是UITextView时,这不会发生,我不知道为什么以及如何修复它。

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

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

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

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

1 个答案:

答案 0 :(得分:0)

滚动显示UIScrollView中的任何内容

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

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