GestureRecognizer无法动态运行/在额外的班级中迅速运行

库兹杜

我想为每个Viewcontroller实现一个手势识别器。

以下代码正在运行:

class ViewController: UIViewController {
   func draggedView(sender:UIPanGestureRecognizer){
    // do stuff
   }

   override func viewDidLoad() {
     super.viewDidLoad()

     let panRec = UIPanGestureRecognizer()
     panRec.addTarget(self, action: #selector(ViewController.draggedView(_:)))
     self.view.addGestureRecognizer(panRec)
     self.view.userInteractionEnabled = true   
     }
}

现在我想给这个平移手势多一点动态感/抽象感

   class Tools : NSObject {

   var currentViewController: UIViewController? 

   func addPanToViewController(viewcontroller: UIViewController) {

    currentViewcontroller = viewcontroller

    if let currentViewcontroller = currentViewcontroller {
        let panRec = UIPanGestureRecognizer()
        panRec.addTarget(self, action: #selector(draggedView(_:)))
        currentViewcontroller.view.addGestureRecognizer(panRec)
        currentViewcontroller.view.userInteractionEnabled = true  
    } 

   }

 func draggedView(sender:UIPanGestureRecognizer) {
  //never called
 }
}

我像这样在ViewController-Class中调用代码:

    let sidemenu = Tools()
    sidemenu.addPanToViewController(self)

但是什么也没发生。没有错误,但是没有手势在起作用。使用调试器,我看到该手势已添加。因此,每个代码都将执行。

我想在我的Tools类中执行draggedView。

我真的不明白我的问题在哪里?

Tj3n

我认为,如果您希望此方法有效,则必须使Tools类成为单例:

static let sharedInstance = Tools()

然后在addPanToViewController

panRec.addTarget(Tools.sharedInstance, action:#selector(draggedView(_:)))

在您的viewController

Tools.sharedInstance.addPanToViewController(self)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法重新运行在机器人框架中动态创建的失败的测试套件/测试用例

来自分类Dev

运行在cmd中Maven项目

来自分类Dev

运行在Promise.then()中定义的函数

来自分类Dev

缩略图行在Chrome中工作正常,但在Firefox中无法正常运行(引导程序)

来自分类Dev

动态更改运行在Tomcat上的Web应用的Logback级别

来自分类Dev

动态添加的javascript无法运行

来自分类Dev

我的班级的静态实例函数无法正常运行

来自分类Dev

运行在CSV数据的行中(在Python中)

来自分类Dev

无法在32位操作系统上运行在NetBeans(在64位Windows 10上)中创建的.exe

来自分类Dev

从命令行在包中运行Java

来自分类Dev

如何让Perl运行在BASH中定义的别名?

来自分类Dev

运行在CI工具中的WCT导出结果

来自分类Dev

如何定期运行在CDK中创建的Lambda?

来自分类Dev

如何从运行在QThread中的服务器捕获信号

来自分类Dev

从Linux命令行在MATLAB中运行选择

来自分类Dev

如何在一个不同的班级中运行一个班级?

来自分类Dev

Powershell脚本逐行在Powershell窗口上运行,但不能在脚本中运行

来自分类Dev

运行在bashrc中设置的函数或别名,或者通过nohup运行配置文件

来自分类Dev

Powershell脚本逐行在Powershell窗口上运行,但不能在脚本中运行

来自分类Dev

cmd运行exe无法在Python中运行

来自分类Dev

通话中的额外参数-迅速

来自分类Dev

迅速。无法将我的按钮连接到我班级中的 GIDSignIn 按钮

来自分类Dev

为类中的任何方法运行额外的代码

来自分类Dev

无法使用 python 访问 mysql db(都运行在不同的容器上)

来自分类Dev

无法在Webstorm中运行SASS

来自分类Dev

全屏无法在IE中运行

来自分类Dev

无法在Erlang中运行fsm

来自分类Dev

无法在vscode中运行网页

来自分类Dev

无法在Eclipse中运行tomcat

Related 相关文章

  1. 1

    无法重新运行在机器人框架中动态创建的失败的测试套件/测试用例

  2. 2

    运行在cmd中Maven项目

  3. 3

    运行在Promise.then()中定义的函数

  4. 4

    缩略图行在Chrome中工作正常,但在Firefox中无法正常运行(引导程序)

  5. 5

    动态更改运行在Tomcat上的Web应用的Logback级别

  6. 6

    动态添加的javascript无法运行

  7. 7

    我的班级的静态实例函数无法正常运行

  8. 8

    运行在CSV数据的行中(在Python中)

  9. 9

    无法在32位操作系统上运行在NetBeans(在64位Windows 10上)中创建的.exe

  10. 10

    从命令行在包中运行Java

  11. 11

    如何让Perl运行在BASH中定义的别名?

  12. 12

    运行在CI工具中的WCT导出结果

  13. 13

    如何定期运行在CDK中创建的Lambda?

  14. 14

    如何从运行在QThread中的服务器捕获信号

  15. 15

    从Linux命令行在MATLAB中运行选择

  16. 16

    如何在一个不同的班级中运行一个班级?

  17. 17

    Powershell脚本逐行在Powershell窗口上运行,但不能在脚本中运行

  18. 18

    运行在bashrc中设置的函数或别名,或者通过nohup运行配置文件

  19. 19

    Powershell脚本逐行在Powershell窗口上运行,但不能在脚本中运行

  20. 20

    cmd运行exe无法在Python中运行

  21. 21

    通话中的额外参数-迅速

  22. 22

    迅速。无法将我的按钮连接到我班级中的 GIDSignIn 按钮

  23. 23

    为类中的任何方法运行额外的代码

  24. 24

    无法使用 python 访问 mysql db(都运行在不同的容器上)

  25. 25

    无法在Webstorm中运行SASS

  26. 26

    全屏无法在IE中运行

  27. 27

    无法在Erlang中运行fsm

  28. 28

    无法在vscode中运行网页

  29. 29

    无法在Eclipse中运行tomcat

热门标签

归档