テキストビューに数値を入力するためにアプリにテンキーを配置しましたが、数値を入力するにはテキストビューをクリックする必要があります。そうすると、通常のキーボードが表示されますが、これは望ましくありません。
キーボードを完全に無効にするにはどうすればよいですか?どんな助けも大歓迎です。
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.
}
Swift 2.x、3.x、4.x、5.x
textField.inputView = UIView()
トリックをします
UITextFieldの場合、enabled
プロパティをNOに設定できます。
UITextViewの場合、NOを返すようにデリゲートに-textViewShouldBeginEditing:
を実装して、編集を開始しないようにすることができます。または、サブクラス化し、-canBecomeFirstResponder
をオーバーライドしてNOを返すことができます。または、その編集動作を利用して、テキストビューのinputView
として使用するビューに数値ボタンを配置できます。これにより、テキストビューの編集時にボタンが表示されます。それはあなたが望むものかもしれませんし、そうでないかもしれません。
既存のボタンをどのように機能させるかによっては、これが壊れる可能性がありますが、textViewの編集可能なプロパティをNOに設定するとキーボードが表示されないようにすることができます
myTextView.editable = NO
同じビューに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番目のテキストフィールドに切り替えるとデフォルトのキーボードが表示されます(スクリーンショットのアカウント番号)