私は、入力フィールドでのautolayoutの使用方法に関する記事に基づいて、内部にUIViewを持つUIScrollViewを持っています。この資料では、詳細については、UIViewを同じ高さに設定し、通常のビューで設定する方法について説明します。https://www.natashatherobot.com/ios-autolayout-scrollview/キーボードによるUIScrollViewの高さ
私はコンテンツビュー内に複数のUITextFieldを持っています。私がUITextFieldを押すと、キーボードを表示してUITextFieldにスクロールするためのビューが必要になります。最初は複数のアプローチを試しましたが、問題は画面の一番下で、不要なビューの下から空白スペースがたくさんあります。私が試したのアプローチは、次の行使用されています。これを変更するには
- (void)keyboardWillHide:(NSNotification *)notification {
[[self scrollView] setContentInset:UIEdgeInsetsMake([[self scrollView] contentInset].top, 0.0f, 0.0f, 0.0f)];
}
- (void)keyboardWillShow:(NSNotification *)notification {
[[self scrollView] setContentInset:UIEdgeInsetsMake([[self scrollView] contentInset].top, 0.0f, [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height, 0.0f)];
}
を、私はより適切な値に下を変更すると、トリックを行うだろうと思ったが、私はこれを行う際に、ビューはにスクロールしません。 UITextFieldをもう一度押してください。私は手動でフィールドをスクロールすることができます。私はこれを達成方法は、以下を使用している:
- (void)keyboardWillShow:(NSNotification *)notification {
float keyboard = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
float offset = [[[[self contentView] subviews] lastObject] frame].size.height + [[[[self contentView] subviews] lastObject] frame].origin.y + 30.0f;
if ([[self contentView] frame].size.height - [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height < offset) {
[[self scrollView] setContentInset:UIEdgeInsetsMake([[self scrollView] contentInset].top, 0.0f, offset - ([[self view] frame].size.height - keyboard), 0.0f)];
}
}
誰もがスクロールしたとき、私はUITextFields下の空白を無視することができる方法を知っているが、scrollviewを選択するUITextFieldにスクロールすることができません。私はscrollRectToVisibleメソッドを使ってみましたが、これは何もしません。
https://github.com/michaeltyson/TPKeyboardAvoiding library、super easyを使用してください。スクロール・ビューのカスタム・クラスとしてTPKeyboardAvoidingScrollViewを設定するだけで、キーボードが表示されたときに管理する必要があるすべてのものが処理されます。 –
ライブラリをありがとう、しかし、ライブラリを含めることなくそれを行う方法はありますか?私は、コードを使用してみましたが、scrollviewは入力フィールドにスクロールしますが、スクロールビューはジャンプし、ライブラリから提供されたコードを使用すると上からスクロールします。 – Sietse