UILongPressGesture 处理运动而不是长按

Posted

技术标签:

【中文标题】UILongPressGesture 处理运动而不是长按【英文标题】:UILongPressGesture working on movement not on long press 【发布时间】:2018-02-12 08:23:14 【问题描述】:

我正在尝试将 UILongPressGesture 添加到单元格中。它有效,但只有当我长按并朝任何方向移动时。 它应该在长按时调用选择器方法,但是当我长按并开始移动时它正在调用。我也在处理手势的状态,但直到我长按并开始移动,选择器才会调用。

我也尝试向单元格的内容视图及其 UIlable 元素添加手势,但没有成功。

let longPressGesture: UILongPressGestureRecognizer = 
                    let gesture = UILongPressGestureRecognizer()
                    gesture.addTarget(self, action: #selector(MyViewController.handleLongPressGetureForRow(_:)))
                    gesture.delaysTouchesBegan = false
                    gesture.cancelsTouchesInView = false
                    gesture.numberOfTouchesRequired = 1
                    gesture.minimumPressDuration = 0.2
                    return gesture
                ()
                cell.addGestureRecognizer(longPressGesture)
                cell.tag = indexPath.row

Cells where adding gesture

请帮助我。提前致谢。

【问题讨论】:

【参考方案1】:

func之前用@objc代替handleLongPressGetureForRow(_:)改为self.handleLongPressGetureForRow(v:)

   let longPressGesture: UILongPressGestureRecognizer = 
        let gesture = UILongPressGestureRecognizer()
        gesture.addTarget(self, action: #selector(self.handleLongPressGetureForRow(v:)))
        gesture.delaysTouchesBegan = false
        gesture.cancelsTouchesInView = false
        gesture.numberOfTouchesRequired = 1
        gesture.minimumPressDuration = 0.2
        return gesture
    ()
    cell.addGestureRecognizer(longPressGesture)
    cell.tag = indexPath.row

    return cell

@objc func handleLongPressGetureForRow(v: UILongPressGestureRecognizer )

   print("saghsaghghsgfsgsaghghsaghsaghghsaghashgsasa")

【讨论】:

我已经添加了 @objc,没有 @objc 它会产生编译时错误。并且使用self.handleLongPressGestureForRow(_:) 而不是MyViewcontroller.handleLongPressGestureForRow(_:) 并不能解决问题。我已经提到它正在工作,但只有当我长按后开始移动时。

以上是关于UILongPressGesture 处理运动而不是长按的主要内容,如果未能解决你的问题,请参考以下文章

目标 C:滚动视图上的 UILongPressGesture

vue动画如何实现只经历运动而不隐藏

自动布局不是那么自动

Gazebo学习随记4 Actor: 该配合你的演出我视而不见

UILongPressGestureRecognizer 给出奇怪的结果

UICollectionView 中的长按和平移手势