我在我的应用程序中放置了一个数字键盘,用于将数字输入到文本视图中,但是为了输入数字,我必须单击文本视图。一旦我这样做,常规键盘就会出现,这是我不想要的。
如何完全禁用键盘?任何帮助是极大的赞赏。
我在我的应用程序中放置了一个数字键盘,用于将数字输入到文本视图中,但是为了输入数字,我必须单击文本视图。一旦我这样做,常规键盘就会出现,这是我不想要的。
如何完全禁用键盘?任何帮助是极大的赞赏。
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,你可以-textViewShouldBeginEditing:
在它的委托中实现返回 NO,这样它就永远不会开始编辑。或者您可以将其子类化并覆盖-canBecomeFirstResponder
以返回 NO。或者您可以利用它的编辑行为并将您的数字按钮放入您用作文本视图的视图中inputView
。这应该会导致在编辑文本视图时显示按钮。这可能是也可能不是你想要的。
根据您现有按钮的工作方式,这可能会破坏它们,但您可以阻止键盘显示将 textView 的可编辑属性设置为 NO
myTextView.editable = NO
当在同一个视图上有 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
这将完全隐藏目标文本字段的键盘(在我的情况下为DropDownList),并在用户切换到第二个文本字段时显示默认键盘(我的屏幕截图上的帐号)
我使用了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) <<<
}
private void TxtExpiry_EditingDidBegin(object sender, EventArgs e)
{
((UITextField)sender).ResignFirstResponder();
}
在 C# 中,这对我有用,我不使用情节提要。
在 Xcode 8.2 中,您可以通过取消选中状态“启用”选项轻松完成此操作。
或者,如果您想通过代码执行此操作。您可以简单地创建此文本字段的@IBOutlet,为其命名,然后在 viewDidLoad 函数(或任何自定义函数,如果您愿意)中使用此变量名称,如下所示(在 swift 3.0.1 中):
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
myTextField.isEditable = false
}