我在我的应用程序中放了一个数字小键盘,用于在文本视图中输入数字,但为了输入数字,我必须单击文本视图。一旦我这样做,常规键盘出现,我不想要。
如何完全禁用键盘?非常感谢任何帮助。
答案 0 :(得分:98)
默认情况下,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.
}
答案 1 :(得分:55)
在Swift 2.x,3.x,4.x
中textField.inputView = UIView()
诀窍
答案 2 :(得分:4)
如果它是UITextField,您可以将它的enabled
属性设置为NO。
如果它是UITextView,您可以在其委托中实现-textViewShouldBeginEditing:
以返回NO,这样它就永远不会开始编辑。或者您可以对其进行子类化并覆盖-canBecomeFirstResponder
以返回NO。或者您可以利用其编辑行为并将数字按钮放入视图中,并将其用作文本视图inputView
。这应该会导致在编辑文本视图时显示按钮。这可能是也可能不是你想要的。
答案 3 :(得分:3)
根据您现有按钮的工作方式,这可能会破坏它们,但您可以阻止键盘显示将textView的可编辑属性设置为NO
myTextView.editable = NO
答案 4 :(得分: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 )并在用户切换到第二个文本字段(帐号)时显示默认值截图)
答案 5 :(得分:0)
答案 6 :(得分:0)
答案 7 :(得分:0)
我使用了keyboardWillShow Notification
和textField.endEditing(true)
:
lazy var myTextField: UITextField = {
let textField = UITextField()
// ....
return textField
}()
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
}
@objc func keyboardWillShow(_ notification: Notification) {
myTextField.endEditing(true)
// if using a textView >>> myTextView.endEditing(true) <<<
}
答案 8 :(得分:-1)
private void TxtExpiry_EditingDidBegin(object sender, EventArgs e)
{
((UITextField)sender).ResignFirstResponder();
}
在C#中,这对我有用,我不会使用故事板。
答案 9 :(得分:-2)
在Xcode 8.2中,您可以通过取消选中状态“已启用”选项轻松完成。