在每个视图上隐藏键盘 - Swift

时间:2015-10-15 15:14:55

标签: ios swift

完成编辑textField之后,我不会问如何隐藏键盘。我的问题是:有没有办法在每个视图上执行此操作? (就像一个设置)或者我是否需要编写以下两个函数并每次都正确设置委托?

 func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    textField.resignFirstResponder()
    return true;
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    self.view.endEditing(true)
}

我正在开发一个包含大量文本字段(以及视图)的应用程序,所以我尽量避免使用冗余代码。避免这种重复的最佳解决方案是什么?

谢谢!

3 个答案:

答案 0 :(得分:0)

最简单的方法是在文本字段下方放置一个巨大的隐形按钮,然后当点击非文本字段时,调用隐形按钮操作将其关闭。如果这不适用于您的方案,请告诉我。

答案 1 :(得分:0)

您可以创建自己的文本字段,它是UITextField的子类。请参阅下面的简单自定义UITextField:

import UIKit

class CustomTextField: UITextField, UITextFieldDelegate {

    override func awakeFromNib() {
        super.awakeFromNib()
        self.delegate = self
    }

    func textFieldShouldReturn(textField: UITextField) -> Bool {

        self.resignFirstResponder()

        return true
    }
}

将自定义文本字段名称用于Storyboard中的Custom Class

请参阅Github

上的示例

答案 2 :(得分:0)

  1. 创建IBAction方法以关闭键盘

    @IBAction func backgroundTapped (sender: UIView)
    {
        sender.endEditing(true)
    }
    
  2. 将您的UIView的班级更改为UIControl,其中包含storyboard中的文本字段(您甚至可以按照所示的方式查看viewcontroller)

  3. Setting the custom class

    看起来像这样:

    It looks like this

    1. 现在,您可以在故事板中将IBAction与此视图的Touch Up Inside事件相关联,如图所示。
    2. Touch Up Inside