首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIGestureRecognizer不向其他类发送操作

UIGestureRecognizer不向其他类发送操作
EN

Stack Overflow用户
提问于 2018-06-10 02:05:16
回答 1查看 973关注 0票数 1

我正在尝试从UIView类的UIGestureRecognizer向其父类的View Controller发送操作。

HomeViewController包含一个包含多个(5) OperationViews的视图。

OperationView扩展了UIView,如下所示:

代码语言:javascript
运行
复制
class OperationView: UIView {
    override func awakeFromNib() {
        super.awakeFromNib()

        // OperationView is on a view that has HomeViewController as it's controller in StoryBoard
        let swipeGestureRecognizer = UISwipeGestureRecognizer(target: HomeViewController.self(), action: #selector(HomeViewController.operatorWasSwiped(_:)))
        swipeGestureRecognizer.direction = .left

        let tapGestureRecognizer = UITapGestureRecognizer(target: HomeViewController.self(), action: #selector(HomeViewController.operatorWasSwiped(_:)))

        self.addGestureRecognizer(swipeGestureRecognizer)
        self.addGestureRecognizer(tapGestureRecognizer)
    }

在HomeViewController中,我有一个应该由UIGestureRecognizers调用的函数:

代码语言:javascript
运行
复制
@objc func operatorWasSwiped(_ sender : UIGestureRecognizer) {
    if (sender.isKind(of: UITapGestureRecognizer.self)) { print("Tapped") }
    else { print("Swiped") }

    self.performSegue(withIdentifier: "segue1", sender: nil)
}

但是,我没有得到任何东西。一点错误都没有。

我尝试使用HomeViewController上的IBOutlet将UIGestureRecognizer添加到每个OperationView中,如下所示:

代码语言:javascript
运行
复制
view1.swipeGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view2.swipeGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view3.swipeGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view4.swipeGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view5.swipeGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))

view1.tapGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view2.tapGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view3.tapGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view4.tapGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))
view5.tapGestureRecognizer?.addTarget(self, action: #selector(operatorWasSwiped(_ :)))

view1.addGestureRecognizer(view1.swipeGestureRecognizer!)
view2.addGestureRecognizer(view2.swipeGestureRecognizer!)
view3.addGestureRecognizer(view3.swipeGestureRecognizer!)
view4.addGestureRecognizer(view4.swipeGestureRecognizer!)
view.addGestureRecognizer(view5.swipeGestureRecognizer!)

view1.addGestureRecognizer(view1.tapGestureRecognizer!)
view2.addGestureRecognizer(view2.tapGestureRecognizer!)
view3.addGestureRecognizer(view3.tapGestureRecognizer!)
view4.addGestureRecognizer(view4.tapGestureRecognizer!)
view5.addGestureRecognizer(view5.tapGestureRecognizer!)

我在其中添加了:

代码语言:javascript
运行
复制
var swipeGestureRecognizer: UISwipeGestureRecognizer?
var tapGestureRecognizer: UITapGestureRecognizer?

为OperationView的变量创建类

这是可行的,但还远远谈不上优雅(想象一下,如果我不得不添加另一个view...kinda,这会使我之前的抽象失去意义)

知道是怎么回事吗?或者我错过了什么?

我使用的是Swift 4Xcode 9

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

https://stackoverflow.com/questions/50777148

复制
相关文章

相似问题

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