0

内部UIToolbarを含むインスタンスがあります。UITextFieldツールバーをアクセサリ ビューに設定したいと思いUITextFieldます。

私がこれを行う方法は次のとおりです。

[myTextView setInputAccessoryView:myToolbar];

コードをコンパイルして実行すると、テキスト フィールドを押すとキーボード全体が消えます。inputAccessoryViewではなく を設定していることを特に確認しましたinputView。明示的な指示なしに、入力ビュー全体が置き換えられたようです。

これを修正する方法を知っている人はいますか?

4

1 に答える 1

5

一般に、入力アクセサリ ビューにテキスト フィールドを配置するのは良くありません...ビューの下部にツールバーを配置UIKeyboardWillChangeFrameNotificationし、キーボードでツールバーを移動するために使用するとよいでしょう...

あなたのビューでDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];

そして、View Controllerのコードのどこかに:

-(void) keyboardWillChange:(NSNotification*)notify {

    CGRect endFrame;
    float duration = [[[notify userInfo] valueForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
    [[[notify userInfo] valueForKey:UIKeyboardFrameEndUserInfoKey] getValue:&endFrame];
    endFrame = [self.view convertRect:endFrame fromView:nil];
    float y = (endFrame.origin.y > self.view.bounds.size.height ? self.view.bounds.size.height-44 : endFrame.origin.y-44);

    [UIView animateWithDuration:duration animations:^{
        toolbar.frame = CGRectMake(0, y, self.view.bounds.size.width, 44);
    }];

}
于 2012-06-27T17:02:59.347 に答える