1. ホーム
  2. ios

[解決済み] iPhoneキーボードカバー UITextField

2022-09-01 05:30:22

質問

あるアプリで インターフェースビルダー をセットアップしています。 UIView を設定しましたが、ビューの下部近くにテキストフィールドがあります。 アプリを実行してそのフィールドにテキストを入力しようとすると、キーボードがフィールドの上にスライド アップするので、キーボードをもう一度隠すまで、何を入力しているのかがわかりません。

この問題に遭遇し、親ビューをスクロール可能にしたり、テキスト フィールドを画面上方に移動したりせずに解決する良い方法を見つけた方はいらっしゃいますか?

どのように解決するのですか?

通常の解決策は、フィールド(およびその上のすべて)をアニメーションで上にスライドさせ、終わったら下に戻すことです。 テキスト フィールドとその他のアイテムのいくつかを別のビューに入れ、そのビューを単位としてスライドさせる必要があるかもしれません。 (私は、このようなものを「テクトニック・プレート」のように「プレート」と呼んでいます。) しかし、凝ったことをする必要がないのであれば、一般的なアイデアは以下のとおりです。

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    [self animateTextField: textField up: YES];
}


- (void)textFieldDidEndEditing:(UITextField *)textField
{
    [self animateTextField: textField up: NO];
}

- (void) animateTextField: (UITextField*) textField up: (BOOL) up
{
    const int movementDistance = 80; // tweak as needed
    const float movementDuration = 0.3f; // tweak as needed

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];
}