web-dev-qa-db-ja.com

Next、Previous、Doneボタンでキーボードを取得する方法は?

キーボードの上に[次へ]、[前へ]、[完了]ボタンがあります。

多くのアプリでそれを見てきました。

特に記入するフォームがある場合。

enter image description here

上記のキーボードに似たものを実現したい

どうすれば入手できますか?

64
Parth Bhatt

答えは this other post にあります。 iOSライブラリをチェックしたところ、UITextFieldの inputAccessoryView がまさにあなたが探しているものです!

お役に立てれば !

60
Ermiar

BSKeyboardControls というクラスを作成しました。これにより、キーボードにコントロールを簡単に追加できます。クラス、手順、およびサンプルコードは ここGitHubで にあります。

このコントロールはテキストフィールドとテキストビューで機能し、iPhoneとiPadの両方に最適化されています。

25
simonbs
-(BOOL)textFieldShouldBeginEditing: (UITextField *)textField 

{
     UIToolbar * keyboardToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];

    keyboardToolBar.barStyle = UIBarStyleDefault;
    [keyboardToolBar setItems: [NSArray arrayWithObjects:
                                [[UIBarButtonItem alloc]initWithTitle:@"Previous" style:UIBarButtonItemStyleBordered target:self action:@selector(previousTextField)],

                                [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStyleBordered target:self action:@selector(nextTextField)],
                                [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                                [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(resignKeyboard)],
                                nil]];
    textField.inputAccessoryView = keyboardToolBar;

}



- (void)nextTextField {


    if (textField1) {

        [textField1 resignFirstResponder];
        [textField2 becomeFirstResponder];

    }

}

-(void)previousTextField
{

    if (textField2) {
        [textField2 resignFirstResponder];
        [textField1 becomeFirstResponder];
    }


}

-(void)resignKeyboard {

    [textField1 resignFirstResponder];
    [textField2 resignFirstResponder];

}
19
user2021443

基本的にこれを行うユーティリティクラスがあります。

https://github.com/kalvish21/CustomKeyboard

アイデアはとてもシンプルです。バーボタン項目のあるアクセサリツールバーを追加する必要があります。そのボタンが何をするかを定義するデリゲートがあります。

6
KVISH

https://github.com/hackiftekhar/IQKeyboardManager

これは今まで見た中で最高のキーボードハンドラです。テキスト入力を管理する非常に優れた方法。

その機能の一部1)ZERO LINE OF CODE

2)自動的に動作します

3)UIScrollViewはもうありません

4)これ以上のサブクラスはありません

5)これ以上の手作業

6)これ以上の#imports

4
i.AsifNoor

これは、キーボードのすぐ上に配置されるカスタムコントロールです。 UIToolbarを使用できると思います。

前と次のパスは、textFieldsのfirstResponderを通過し、Doneは再署名を行い、ツールバーを非表示にします。

キーボードアニメーションを一致させるには、 このコード またはSOをご覧ください: "iPhoneのデフォルトのキーボードアニメーションレートは?"

1
Nick Weaver

すべての向きでiPhone/iPadで動作し、高度にカスタマイズ可能なこの機能の実装を使用して、 リポジトリ を作成しました。

0
wzbozon

他の回答で述べたように、あなたが探しているのは inputAccessoryView です。

このココアポッドを使用して、ここに別の方法を追加したいと思います:

ポッド ' ITextField-Navigation '

すべてのUITextFieldsには、nextTextFieldpreviousTextFieldの2つの追加プロパティがあります。その後、Interface BuilderでnextTextFieldを接続するだけで、[前へ]、[次へ]、[完了]ボタンが自動的に追加されます。すべて機能し、コードは必要ありません。

必要に応じて、UIをカスタマイズしたり、ボタンを追加したりすることもできます。

enter image description hereenter image description here

0
Thanh Pham