objective-c - UIScrollView 内的水平平移手势

标签 objective-c swift uiscrollview uicollectionview swipe

我有一个带有垂直 ScrollView 的 UIcollectionView,每行包含一个 UIView,在 uiview 内我以这种方式附加了一个平移手势:

let swipe = UIPanGestureRecognizer(target: self, action: "swipe:")
cell.addGestureRecognizer(swipe)

方法是这样的:

func swipe(sender: UIPanGestureRecognizer) {
        let point = sender.velocityInView(sender.view!)
        switch sender.state {
        case .Ended:
            if point.x < 0 {
                selectedMessageForDetails = sender.message!
                self.performSegueWithIdentifier("newView", sender: nil)
            }
        default:break
        }
}

一切正常,但是这样当我在单元格中水平滑动时,会调用滑动方法,但是如果我垂直滑动, ScrollView 不起作用,我该如何解决这个问题?

我希望拥有与 Whatsapp 消息相同的功能,如果我在气泡中从右向左滑动,我可以打开消息详细信息,但如果我垂直滑动,我可以滚动 ScrollView !

有什么想法吗?

最佳答案

您可以向 self.view 提供手势,而不是向单个单元格提供手势

    let swipe = UIPanGestureRecognizer(target: self, action: "swipe:")
    self.view.addGestureRecognizer(swipe)

识别可以在操作方法中使用的当前单元格

let point = swipe .locationInView(self.view)

let indexPath = collectionview.indexPathForItemAtPoint(point)

关于objective-c - UIScrollView 内的水平平移手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37180778/

相关文章:

iphone - 我想在持续时间达到 5 分钟时停止 AVAudioRecorder

ios - UIScrollView 内容大小固定为 600x600(Main.storyboard 大小)

iOS 核心数据谓词 : How to predicate the primitive value?

ios - 选择时如何重新加载标签栏项目?

ios - Swift 4 中的视频动画

swift - RealityKit – 为什么 AnchorEntity 位置始终为 (x : 0, y : 0, z: 0)

iphone - 单屏两个UITableView

ios - UIScrollView 中的核心文本段落模糊