我在我的应用程序中添加了数字键盘以将数字输入到文本视图中,但是为了输入数字,我必须点击文本视图。一旦我这样做了,常规键盘就会出现,而我不想要它。
如何完全禁用键盘?非常感谢您的帮助。
如何完全禁用键盘?非常感谢您的帮助。
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()
有效果
textField.inputAccessoryView = UIView()
隐藏 accessoryView,同时也可以使用 textField.tintColor = .white
隐藏光标(Swift 5.x)。 - Brian Lenabled
属性设置为NO。-textViewShouldBeginEditing:
来返回NO,这样它就永远不会开始编辑。或者您可以子类化它并覆盖-canBecomeFirstResponder
以返回NO。或者您可以利用它的编辑行为,将数字按钮放入一个视图中,然后将该视图用作文本视图的inputView
。这应该会导致在编辑文本视图时显示按钮。这可能是您想要的,也可能不是。根据您现有的按钮工作方式,这可能会破坏它们,但您可以通过将textView的editable属性设置为NO来防止键盘弹出。
myTextView.editable = NO
当我在同一个视图上有2个文本字段时,我遇到了相同的问题。我的目的是为一个文本字段显示默认键盘,而对于第二个文本字段则隐藏默认键盘,并显示下拉列表。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
这个方法对于两个文本框并没有像我预期的那样起作用,唯一的解决办法是
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();
}
或者如果你想通过代码实现,你可以简单地创建一个这个文本框的 @IBOutlet,给它一个名称,然后在 viewDidLoad 函数中使用这个变量名(或任何自定义函数,如果你打算这样做),就像这样(在 Swift 3.0.1 中):
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
myTextField.isEditable = false
}
UIView
都可以设置为inputView
。这将导致该视图以与标准键盘相同的方式进行动画化进入和退出。 - BreadicalMD