我有一个带有textField和textView的屏幕。
我希望在按下返回键时或者如果用户点击屏幕的空白区域时关闭textField键盘。
教程告诉我要做以下事情:
@IBOutlet weak var DescriptionContent: UITextView!
@IBOutlet weak var TitleContent: UITextField!
func textFieldShouldReturn(TitleContent: UITextField) -> Bool {
TitleContent.resignFirstResponder()
return false
}
在故事板上,我点击了textField,然后按住Ctrl键将一个委托拖动到包含textField的视图控制器上方的黄色图标。
这不起作用。
我已经看到堆栈溢出也尝试:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
if let touch = touches.first as? UITouch {
TitleContent.resignFirstResponder()
}
super.touchesBegan(touches , withEvent:event)
}
那并没有用,然后我看到在视图控制器viewdidload方法中尝试以下内容:
let tapper = UITapGestureRecognizer(target: self.view, action:Selector("endEditing:"))
tapper.cancelsTouchesInView = false
self.view.addGestureRecognizer(tapper);
这也不起作用。我的控制器的第一行如下:
class PostController: UIViewController, UIImagePickerControllerDelegate,
UINavigationControllerDelegate, UITextFieldDelegate, UITextViewDelegate { ...
在我的viewDidLoad中,我有以下内容:
DescriptionContent.delegate = self
TitleContent.delegate = self
最终,我希望用户能够通过在文本区域外按下以及使用我的textview来解除键盘。
答案 0 :(得分:0)
我让它工作的方法是将其添加到viewDidLoad函数
中 var tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")
view.addGestureRecognizer(tap)
并创建一个名为DismissKeyboard的方法,只需调用
view.endEditing(true)
这使得如果你点击屏幕上的任何地方,那不是文本字段,它将关闭第一个响应者。
在textFieldShouldReturn函数中,它应返回true,如果返回false,则不会导致第一个响应者关闭。
希望我帮了一下......
答案 1 :(得分:0)
我提供了一些你可能想要的选项。
首先如何移动到新的视图控制器。
@IBOutlet var passCodeText: UITextField! // Make sure you have have this
func textFieldShouldReturn(textField: UITextField) -> Bool {
passCodeText.resignFirstResponder()
self.performSegueWithIdentifier("tableVC", sender: self)
return true
}
爱你的主要问题。
UITextFieldDelegate // make sure to add this to your class line
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true);
}