0

私はこのサンプル プロジェクトを使用しています。私がやりたいことは、ビューに を配置するUITextFieldUITextField、キーボードの下にあるときにビューが少し上に移動することです。

このプロジェクトのTPKeyBoardAvoidingScrollViewクラスを使用しました。ただし、 をクリックすると、ビューが上に移動し、すべて問題ありませんが、背景をクリックすると、通常の画面サイズに復元してキーボードを閉じるのではなく、最初のビューに戻ります。その瞬間でした。UITextField

また、キーボードがポップアップしたときに左右にスクロールできますが、これを解決する方法はありますか? これが私のプロジェクトで、両方を一緒に追加しました。

4

1 に答える 1

2

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 のオブジェクトを使用する他のビューに影響を与える可能性があることに注意してください。

于 2013-03-08T09:59:34.743 に答える