【问题标题】:How does the `tap` function get ignored?`tap` 函数如何被忽略?
【发布时间】:2016-07-18 20:06:36
【问题描述】:

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

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

tap 函数如何被忽略?

【问题讨论】:

  • 请不要链接到您期望下载和调试的整个项目。在此处包含必要的信息,以便问题是独立的。
  • 我上传项目(代码行数很少)的唯一原因是 IDE(在本例中为 XCode)可能在某些元数据文件中做了一些幕后工作。我不知道这些更改是否相关,或者我是否需要更改我的项目类型或其他任何内容。
  • ...您也不需要在问题中包含答案;这正是公认的答案功能的用途。
  • 我想通过添加屏幕截图来帮助未来的研究人员。为了澄清目的,我本可以在已接受答案的评论中添加屏幕截图。不过SO在评论区没有截图上传。
  • 还不错;在这种情况下,请添加您自己的答案(这是允许的,是的!)或将其编辑为接受的答案。

标签: ios cocoa-touch uitapgesturerecognizer


【解决方案1】:

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

let tapGestureRecognizer = UITapGestureRecognizer(target:self, action:Selector("tap:"))
imageView.userInteractionEnabled = true
imageView.addGestureRecognizer(tapGestureRecognizer)

祝你好运。

【讨论】:

  • 谢谢。你的建议提醒我错过了一步:设置图片视图属性User Interaction Enabled
【解决方案2】:

对于依赖 IDE 解决此问题的学习者,您需要启用图像视图的用户交互。

【讨论】:

    【解决方案3】:

    您可以在其上添加触摸代理和退出文本字段键盘。

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

    }

    【讨论】:

      【解决方案4】:

      最新的 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)
      }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-11
        相关资源
        最近更新 更多