ios - swift:当我打开 View Controller 并第一次按下手势识别器时,它说我按下了两次。如何解决这个问题?

标签 ios swift double uigesturerecognizer ibaction

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

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

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

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

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

如果你不明白我的问题,请发表评论。

最佳答案

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

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
}

关于ios - swift:当我打开 View Controller 并第一次按下手势识别器时,它说我按下了两次。如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38701389/

相关文章:

ios - Objective-c:将目录复制到另一个目录

ios - 我们如何在 google place IOS API 中传递类型、page_token、排序等?

ios - UITableview 单元格和标题间距

objective-c - 在 Swift 中使用命令行工具更新当前行

java - 为什么在java中的Float数据类型中存储一个本质上是整数的文字值,最后没有 'f'不会给出错误?

java - 可打包 : Double Array , 日历和位图

c - 基本C程序,巴比伦算法

ios - 在 itunesConnect 中,我的应用程序显示 Apple Pay 选项,我正在使用 Braintree。如何摆脱在我的 itunesConnect 中显示 Apple Pay 选项?

ios - 如何接收 json 字符串并将其转换为字典?

ios - 将数据传递给特定的 ViewController