gpt4 book ai didi

ios - UILongPressGestureRecognizer 未调用其目标方法

转载 作者:行者123 更新时间:2023-11-28 20:55:29 27 4
gpt4 key购买 nike

这适用于 iOS 11 上的设备,但随着我的设备更新到 iOS 12,它不再适用:

//the viewcontroller is initiated with UIGestureRecognizerDelegate

let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(longPress))

//in cellForRowAt:
longPressGesture.minimumPressDuration = 1.0
longPressGesture.delegate = self
longPressGesture.cancelsTouchesInView = false
cell.addGestureRecognizer(longPressGesture)

@objc func longPress(longPressGestureRecognizer: UILongPressGestureRecognizer) {
//never called
}

我还尝试将手势识别器添加到 viewDidLoad 中的按钮,以确保它不是 tableview 的问题,并且仍然没有调用 longPress 函数。

最佳答案

//the viewcontroller is initiated with UIGestureRecognizerDelegate
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(longPress))

看起来您正在尝试使 longPressGesture 成为您的 UIViewController 的实例属性,同时将目标和操作作为其初始化程序的一部分。这是行不通的,因为在初始化时,目标 self 不是实例。还没有实例;实例就是我们正在创建的东西!

相反,将该行移动到 cellForRowAt: 中,如下所示:

//in cellForRowAt:
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(longPress))
longPressGesture.minimumPressDuration = 1.0
longPressGesture.delegate = self
longPressGesture.cancelsTouchesInView = false
cell.addGestureRecognizer(longPressGesture)

关于ios - UILongPressGestureRecognizer 未调用其目标方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52841177/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com