【问题标题】:swift: when I open the view controller and press the gesture recognizer for the first time it says that i pressed it twice. how to fix this?swift:当我打开视图控制器并第一次按下手势识别器时,它说我按下了两次。如何解决这个问题?
【发布时间】:2016-08-01 14:28:00
【问题描述】:

当我打开我的视图控制器时,我有 4 个手势识别器,当我点击两次时,会发生这种喊叫:

@IBOutlet var doubleTap: UITapGestureRecognizer!
@IBAction func doubleTapAction(sender: AnyObject) {
    doubleTap.numberOfTapsRequired = 2
    print("Button was 2x")
}

但是当我第一次按下 4 个按钮中的一个时(我只按下了一次。)它打印出我点击了两次。第一次之后就正常了。

谁能告诉我如何解决这个问题?

感谢您阅读我的问题,希望有人可以帮助我。

如果您不理解我的问题,请发表评论。

【问题讨论】:

    标签: ios swift double uigesturerecognizer ibaction


    【解决方案1】:

    这是因为第一次将手势识别器设置为识别单击。您将其更改为两次点击,但是您将其设置在错误的位置,因为您已经点击了一次,所以它进入了动作并在那里执行了代码:

    self.doubleTap.numberOfTapsRequired = 2 // This is wrong here!
    print("Button was 2x")
    

    所以它改变了识别器来识别两次点击,但它已经识别出一个(这就是代码被执行的原因)所以它也会打印那个文本。

    您设置每次点击时只需要执行一次是没有意义的。这样做的好地方是viewDidLoad

    您还可以在界面生成器中设置所需的点击次数。

    代码示例:

    @IBOutlet var doubleTap: UITapGestureRecognizer!
    @IBAction func doubleTapAction(sender: AnyObject) {
        print("doubleTap was 2x")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        self.doubleTap.numberOfTapsRequired = 2
    }
    

    【讨论】:

    • 你能解释更多吗?如果我无法在 viewdidload 中执行操作并且我有 4 个手势识别器。
    • 什么意思?我已经给你答案了。
    • 我按照你说的做了我添加了自己。我试图把它放在 viewdidload 但它不起作用?所以也许我做错了什么......
    • 当我将它添加到 viewdidload 时,我在 ibaction 中删除了它。但我需要把它放在 viewdidload 和 ibaction 中。所以 tnx 为你的帮助:)
    • 我将其标记为正确答案并添加了示例代码,但仍在审核中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2018-09-14
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多