我有一个自定义文本字段。当用户点击时,它会使用UITableViewController
打开一个弹出窗口。
我想阻止键盘弹出我的文本字段,看来这是不可能的。
所以我尝试了以下在模拟器中可用的代码,但是它不适用于实际的iPhone!
@IBAction func provincePressed(_ sender: Any) {
(sender as AnyObject).resignFirstResponder()
self.view.endEditing(true)
怎么了?怎样才能在实际的iPhone上使用它?或完全阻止键盘显示!
答案 0 :(得分:1)
尝试在textFieldShouldBeginEditing方法中返回false
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
return false
}
答案 1 :(得分:1)
预先将文本字段的isEnabled
设置为false
。
答案 2 :(得分:0)
快捷键4
您可以像这样在textField.resignFirstResponder()
方法内调用textFieldDidBeginEditing
:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField.tag == 1) {
//this is textfield 2, so call your method here
textField.resignFirstResponder()
}
}
您应该给想要的文本字段添加标签。如果您希望 ViewContriler 中的所有文本字段具有相同的行为,则不需要该部分。
此外,不要忘记从UITextFieldDelegate
扩展ViewController并将textField委托给ViewController。
textField.delegate = self
答案 3 :(得分:0)
这是根据SafoineMoncefAmine答案得出的。
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField == yourTextfield) {// No need tag Use QA Manager to handle the textfield
textField.resignFirstResponder()
// Open your menu here, add view, show the menu here.
}
}
除了这个答案,
extension MyViewController: UITextFieldDelegate {
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
if textField == YourTextField{
return false
}
else{
return true
}
}
}
答案 4 :(得分:0)
您只需从UITextField
禁用用户交互,并用UIView
覆盖它,然后在该视图中添加uigesturerecognizer
即可触发您的事件。