单击 UITextView 或单击 return/done 时关闭小键盘?

Dismiss Keypad when clicking UITextView or by clicking return/done?

我正在编写我的第一个应用程序,当我点击它时无法关闭数字小键盘。当我单击背景时它会消失,但当我尝试单击 UITextView 时,它不会消失。另外,数字键盘上没有"Done"或"Return"按钮吗?请深入,因为我还不完全确定一切是如何运作的!提前致谢。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate{

    @IBOutlet weak var CalcButton: UIButton!
    @IBOutlet weak var DaysLabel: UITextView!
    @IBOutlet weak var RateLabel: UITextView!
    @IBOutlet weak var CowsLabel: UITextView!
    @IBOutlet weak var PoundsLabel: UITextView!

    @IBOutlet weak var PoundsTextfield: UITextField!
    @IBOutlet weak var CowsTextfield: UITextField!
    @IBOutlet weak var DaysTextfield: UITextField!
    @IBOutlet weak var RateTextfield: UITextField!

    @IBAction func NDHIALink(sender: AnyObject) {
       UIApplication.sharedApplication().openURL(NSURL(string: "http://www.dhia.org/")!)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.DaysLabel.layer.cornerRadius = 5
        self.RateLabel.layer.cornerRadius = 5
        self.CowsLabel.layer.cornerRadius = 5
        self.PoundsLabel.layer.cornerRadius = 5
        self.CalcButton.layer.cornerRadius = 5

        DaysTextfield.delegate = self
        PoundsTextfield.delegate = self
        RateTextfield.delegate = self
        CowsTextfield.delegate = self
        self.CowsLabel.delegate = self
        self.PoundsLabel.delegate = self
        self.RateLabel.delegate = self
        self.DaysLabel.delegate = self
        DaysTextfield.returnKeyType = UIReturnKeyType.Done


    }

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        CowsTextfield.resignFirstResponder()
        PoundsTextfield.resignFirstResponder()
        DaysTextfield.resignFirstResponder()
        RateTextfield.resignFirstResponder()
        CowsLabel.resignFirstResponder()
        PoundsLabel.resignFirstResponder()
        DaysLabel.resignFirstResponder()
        RateLabel.resignFirstResponder()    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

如果您触摸的 UiTextView 将 "editable" 属性 设置为 "YES" 键盘不会关闭,因为它将再次成为第一响应者。如果您不需要编辑上面的文本,请将 属性 设置为 "NO"(或从 Interface Builder 中取消选中它)。

我不确定大家是否正确理解了我的问题,但是,我确实找到了解决方案!我想做的是当我点击不可编辑的文本视图或背景时停止编辑文本字段。感谢之前帮助过的人!这是解决方案:

 override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let tapRecognizer = UITapGestureRecognizer(target: self, action: "handleSingleTap:")
    tapRecognizer.numberOfTapsRequired = 1
    self.view.addGestureRecognizer(tapRecognizer)

}

func handleSingleTap(识别器:UITapGestureRecognizer){

    self.view.endEditing(true)

}