`tap`函数如何被忽略?

时间:2016-07-18 20:06:36

标签: ios cocoa-touch uitapgesturerecognizer

在Apple的Guide to build a MealKeeper app之后,我能够创建文本字段和图像视图。将UITapGestureRecognizer拖放到图像视图顶部后,我添加了代码以通过使文本字段退出来隐藏键盘。 MealKeeper

当我在模拟器中运行此代码时,我首先单击文本字段,键盘出现。 然后我点击图片视图,键盘没有隐藏。

如何忽略tap函数?

4 个答案:

答案 0 :(得分:2)

您需要将手势添加到imageview,为您的imageview创建一个IBOutlet,并将以下内容添加到' viewDidLoad'。

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("tap:"))
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(tapGestureRecognizer)
祝你好运。

答案 1 :(得分:1)

对于依赖IDE解决此问题的学员,您需要启用图片视图的用户互动。

enter image description here

答案 2 :(得分:0)

您可以在其上添加触摸代理并重置文本字段键盘。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch * touch = [touches anyObject];
if(touch.phase == UITouchPhaseBegan) {
    [self.myTextField resignFirstResponder];
}

}

答案 3 :(得分:0)

最新的Swift 2.3中的语法略有不同

class ViewController: UIViewController {

@IBOutlet weak var textField: UITextField!
@IBOutlet weak var imageView: UIImageView!
@IBAction func tap(sender: UITapGestureRecognizer) {
    textField.resignFirstResponder()
}

override func viewDidLoad() {
    super.viewDidLoad()
    let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:#selector(ViewController.tap(_:)))
    imageView.userInteractionEnabled = true
    imageView.addGestureRecognizer(tapGestureRecognizer)
}
}