首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手势识别器对多个视图的回调

手势识别器对多个视图的回调
EN

Stack Overflow用户
提问于 2018-03-16 02:11:31
回答 2查看 591关注 0票数 1

我有一个自定义UIView,它由9个大小相等的子视图组成。从本质上看就像一个抽搐的脚趾板。

我在这个自定义视图中添加了一个UIPanGestureRecognizer。每次用户在其中一个子视图上平移时,我想要采取一个操作。例如,用户可以在一个手势中浏览前3( 9)个子视图,在本例中,我想采取3个操作。

我可以尝试做一些花哨的数学,并计算出每个子视图的框架,然后找出手势何时从一个子视图交叉到另一个子视图。但是,当一个手势碰到一个新的UIView时,我觉得应该有一种更优雅的方法来获得回调。这样的功能存在吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-16 05:02:23

通过使用hitTest,我找到了一种更优雅的方法,它在启用用户交互的情况下返回最低的子视图。我将pan手势识别器的回调定义为:

代码语言:javascript
复制
var panSelected = Set<UILabel>()
@objc func handlePan(recognizer: UIPanGestureRecognizer) {
    let view = recognizer.view
    let loc = recognizer.location(in: view)
    if let gridLabel = view?.hitTest(loc, with: nil) as? UILabel {
        if !panSelected.contains(gridLabel) {
            // my code here
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2018-03-16 05:53:58

尝试使用堆栈视图分组视图具有相同的手势,&使用

代码语言:javascript
复制
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(stackViewTapped))
myStackView.addGestureRecognizer(tapGesture)

如果需要实现不同的方法,只需添加另一个堆栈视图即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49312174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档