0

約 7 つのテキストフィールドを使用した登録フォームがあります。しかし、値を入力し始めると、キーボードが下の 3 つのフィールドを非表示にします。ビューを上に移動したいのですが、スクロール ビューを使用しないでください。解決策を教えてください。ありがとう。

4

1 に答える 1

0

キーボードの表示と非表示の通知に登録します。

- (void)registerForKeyboardNotifications {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:)
                                                 name:UIKeyboardWillHideNotification object:nil];
}

--

- (void)keyboardWasShown:(NSNotification*)iNotificationメソッドで、次を使用してキーボード サイズを取得します。

     NSDictionary *anUserInfo = [iNotification userInfo];
     CGSize aKeyboardSize = [[anUserInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

iPhone 5 または iPhone 4 であるデバイスに基づいて、画面のサイズも取得します。

これで、非表示のフィールドと、非表示のフィールドを表示するためにビューを上にスライドさせる必要がある距離を把握できます。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textFieldTextField のデリゲートを使用します。非表示のテキストフィールドが編集されるたびに、表示されるように上に移動する必要がある距離を計算します。

距離を取得したら、ビューをアニメートして上に移動します。

上に移動する方法:

    CGFloat aDistanceToMakeFieldVisible = 50.0; //you have to calculate this
    [UIView animateWithDuration:0.5 animations:^{
        CGRect aFrame = self.view.frame;
        aFrame.origin.y -= aDistanceToMakeFieldVisible;
        self.view.frame = aFrame;
    } completion:^(BOOL finished) {
    }];

Animate Down も忘れずに...

于 2013-09-13T04:21:30.957 に答える