在返回键上解除键盘,也在文本区/文本视图外按下

时间:2015-06-16 18:51:38

标签: ios swift keyboard textview textfield

我有一个带有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来解除键盘。

2 个答案:

答案 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);
}