【问题标题】:Long Press Gesture Recognizer Only Fired When Finger is Lifted长按手势识别器仅在手指抬起时触发
【发布时间】:2015-04-01 11:17:20
【问题描述】:

我在使用长按手势识别器时遇到了一个有趣的问题。我将其中一个放在 UITableView 上,它仅在我长按后抬起手指时才起作用。所以基本上,我会把手指放在一个单元格上,然后当我抬起手指时,它会触发长按。我通过在长按开始和结束时输入printns 来解决这个问题,并且在我抬起手指后都开火。我认为tableViews 默认panGestureRecognizer 可能会干扰longPressGestureRecognizer。这是我在viewDidLoad 中的代码:

    var longPress:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "handleLongPress:")
    longPress.minimumPressDuration = 0.06
    longPress.delegate = self
    self.tableView.addGestureRecognizer(longPress)
    longPress.requireGestureRecognizerToFail(self.tableView.panGestureRecognizer)

【问题讨论】:

    标签: ios objective-c uitableview swift uigesturerecognizer


    【解决方案1】:

    在单元格中向下触摸不会导致表格视图的 panGestureRecognizer 失败,因此删除 requireGestureRecognizerToFail 方法,然后您应该在手指仍然向下时进入 .Began 状态。

    【讨论】:

    • 是的,但是我的长按手势识别器干扰了我的平移手势识别器。我有点卡在岩石和坚硬的地方之间。
    • @codeforfood 你有没有尝试实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 并返回true?
    • 是的,我做到了,长按可以工作,但是每当我滚动时,我的长按事件就会被触发。请记住,我的长按实际上很短,因此可能与此有关。
    • @codeforfood,如果您需要“长按”(0.06 不长)那么短,我认为您会被卡住。 0.2 的值对我来说没问题。但是用户在尝试滚动之前总是可以暂停一下,所以我不确定当用户真的不打算这样做时,你是否能确定长按不会触发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2017-12-29
    相关资源
    最近更新 更多