0

UIScrollViewに埋め込まれた、基本的に複数のUITextFieldとUITextViewを持つフォームであるView Controllerがあります。UITextField がファーストレスポンダーになると、スクロール ビューは自動的にフォーカスされたフィールドに移動します。これは、このトピックの最初の回答で説明されている動作と考えられます。

UITextField がファーストレスポンダーになったときに UIScrollView のスクロールを無効にする

これは、ファーストレスポンダーが UITextView の場合には発生しません。なぜ、どのように修正する必要があるのか​​ わかりません。

2 つ目の問題は、キーボードが表示されているときに、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 にスクロールするにはどうすればよいですか?それは最初のレスポンダーであり、キーボードが表示されているときに移動して非表示にするにはどうすればよいですか?

4

1 に答える 1

0

UIScrollViewスクロールしてDo内の何かを表示するには

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

上記のメソッドを取得したら、サブスクライブしUITextViewTextDidBeginEditingNotificationて呼び出します。

于 2012-08-15T14:38:47.987 に答える