TPKeyboardAvoidingScrollView.m には、キーボードが非表示になるときに呼び出されるメソッド (keyboardWillHide:) があります。そのメソッドでは、スクロールビューのコンテンツ オフセットが CGPointZero に設定されているため、スクロールビューは最初のビュー コントローラーに到達します。
- (void)keyboardWillHide:(NSNotification*)notification {
_keyboardRect = CGRectZero;
_keyboardVisible = NO;
// Restore dimensions to prior size
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]];
[UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]];
self.contentInset = _priorInset;
//self.contentOffset = CGPointZero;//Replacing this with below line
self.contentOffset = CGPointMake(self.contentOffset.x, 0);
[self setScrollIndicatorInsets:self.contentInset];
_priorInsetSaved = NO;
[UIView commitAnimations];
}
テキストフィールドの編集中にスクロールを停止するには-
- (void)keyboardDidShow:(NSNotification*)notification {
[self setScrollEnabled:NO];
//existing code
}
- (void)keyboardWillHide:(NSNotification*)notification {
[self setScrollEnabled:YES];
//existing code with modification of content offset
}
これは、TPKeyboardAvoidingScrollView のオブジェクトを使用する他のビューに影響を与える可能性があることに注意してください。