禁用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键盘,请执行以下操作:
- 去Main.Storyboard
- 点击UITextField来select它
- 显示属性检查器
- 取消选中启用的用户交互
要禁用UITextView键盘:
- 去Main.Storyboard
- 点击UITextViewselect它
- 显示属性检查器
- 取消选中可编辑的行为
当在同一个视图上有两个文本框时,我也有同样的问题。 我的目的是显示一个文本字段的默认键盘,并隐藏秒,并显示一个下拉列表。
- (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”选项来轻松完成。
- 点击你想成为不可编辑的文本字段
- 去右边的attirube检查员
- 取消勾选“启用”状态
或者如果你想通过代码来做到这一点。 你可以简单地创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 }