web-dev-qa-db-ja.com

UITextFieldキーボードを無効にしますか?

テキストビューに数値を入力するためにアプリにテンキーを配置しましたが、数値を入力するにはテキストビューをクリックする必要があります。そうすると、通常のキーボードが表示されますが、これは望ましくありません。

キーボードを完全に無効にするにはどうすればよいですか?どんな助けも大歓迎です。

56
michael

UITextFieldのinputViewプロパティはデフォルトでnilです。つまり、標準キーボードが表示されます。

カスタム入力ビューまたはダミービューのみを割り当てた場合、キーボードは表示されませんが、点滅カーソルは表示されます。

UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
myTextField.inputView = dummyView; // Hide keyboard, but show blinking cursor

キーボードと点滅カーソルの両方を非表示にする場合は、次のアプローチを使用します。

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    return NO;  // Hide both keyboard and blinking cursor.
}
98
RohinNZ

Swift 2.x、3.x、4.x、5.x

textField.inputView = UIView()

トリックをします

56
Martin Romañuk

UITextFieldの場合、enabledプロパティをNOに設定できます。

UITextViewの場合、NOを返すようにデリゲートに-textViewShouldBeginEditing:を実装して、編集を開始しないようにすることができます。または、サブクラス化し、-canBecomeFirstResponderをオーバーライドしてNOを返すことができます。または、その編集動作を利用して、テキストビューのinputViewとして使用するビューに数値ボタンを配置できます。これにより、テキストビューの編集時にボタンが表示されます。それはあなたが望むものかもしれませんし、そうでないかもしれません。

4
Caleb

既存のボタンをどのように機能させるかによっては、これが壊れる可能性がありますが、textViewの編集可能なプロパティをNOに設定するとキーボードが表示されないようにすることができます

myTextView.editable = NO
3
jcane86

同じビューに2つのテキストフィールドがあると、同じ問題が発生します。私の目的は、1つのテキストフィールドにデフォルトのキーボードを表示し、2番目に非表示にして、代わりにドロップダウンリストを表示することでした。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 

メソッドは、2つのテキストフィールドで期待どおりに機能しませんでした、唯一の回避策は

    UIView* dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
    myTextField.inputView = dummyView; 
    myTextField.inputAccessoryView = dummyView; 
    myTextField.tintColor =  myTextField.backgroundColor; //to hide a blinking cursor

これにより、ターゲットtextFieldのキーボードが完全に非表示になり(私の場合はDropDownList)、ユーザーが2番目のテキストフィールドに切り替えるとデフォルトのキーボードが表示されます(スクリーンショットのアカウント番号

enter image description here

1
David

UITextFieldキーボードを無効にするには:

  1. Main.Storyboardに移動します
  2. UITextFieldをクリックして選択します
  3. Attributes inspectorを表示します
  4. User Interaction Enabledのチェックを外します

UITextViewキーボードを無効にするには:

  1. Main.Storyboardに移動します
  2. UITextViewをクリックして選択します
  3. Attributes inspectorを表示します
  4. Editable動作のチェックを外します
0
Alzayed