禁用UITextField键盘?

我在我的应用程序中input一个数字键盘,以便将数字input到文本视图中,但为了input数字,我必须单击文本视图。 一旦我这样做,常规键盘出现,我不想要的。

我怎样才能完全禁用键盘? 任何帮助是极大的赞赏。

UITextField的inputView属性默认为零,这意味着显示标准键盘。

如果给它分配一个自定义的input视图,或者只是一个虚拟的视图,那么键盘将不会出现,但闪烁的光标仍然会出现:

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

 textField.inputView = UIView() 

做的伎俩

根据你现有的button如何工作,这可能会打破他们,但你可以防止键盘显示设置textView的可编辑属性为NO

 myTextView.editable = NO 

如果是UITextField,可以将其enabled属性设置为NO。

如果是UITextView,则可以在其委托中实现-textViewShouldBeginEditing:返回NO,以便它永远不会开始编辑。 或者你可以-canBecomeFirstResponder它并覆盖-canBecomeFirstResponder返回NO。 或者你可以利用它的编辑行为,并把你的数字button放到一个你用作文本视图的inputView视图中。 这应该会导致编辑文本视图时显示button。 这可能是也可能不是你想要的。

要禁用UITextField键盘,请执行以下操作:

  1. Main.Storyboard
  2. 点击UITextField来select它
  3. 显示属性检查器
  4. 取消选中启用用户交互

要禁用UITextView键盘:

  1. Main.Storyboard
  2. 点击UITextViewselect它
  3. 显示属性检查器
  4. 取消选中可编辑的行为

当在同一个视图上有两个文本框时,我也有同样的问题。 我的目的是显示一个文本字段的默认键盘,并隐藏秒,并显示一个下拉列表。

 - (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 

这将完全隐藏目标文本字段的键盘(在我的情况下, DropDownList ),并显示默认的一个,当用户切换到第二个文本框( 帐户号码在我的屏幕截图)

在这里输入图像描述

 private void TxtExpiry_EditingDidBegin(object sender, EventArgs e) { ((UITextField)sender).ResignFirstResponder(); } 

在C#中这对我工作,我不使用故事板。

在Xcode 8.2中,您可以通过取消选中状态“enabled”选项来轻松完成。

  1. 点击你想成为不可编辑的文本字段
  2. 去右边的attirube检查员
  3. 取消勾选“启用”状态

在这里输入图像描述

或者如果你想通过代码来做到这一点。 你可以简单地创build这个文本字段的@IBOutlet,给它一个名字,然后在viewDidLoad func(或任何自定义的一个,如果你的意图)使用这个variables名称(在swift 3.0.1中):

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. myTextField.isEditable = false }