首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIView & Swift :如何通过扩展向Swift添加操作?

UIView & Swift :如何通过扩展向Swift添加操作?
EN

Stack Overflow用户
提问于 2021-11-10 05:44:02
回答 1查看 62关注 0票数 0

在UIView Extension中实现时,无法将操作添加到UIView

UIView扩展

代码语言:javascript
运行
复制
extension UIView {
public func addAction(_ selector: Selector) {
        isUserInteractionEnabled = true
        let gesture = UITapGestureRecognizer(target: self, action: selector)
        self.addGestureRecognizer(gesture)
    }
}

ViewController中的In函数

代码语言:javascript
运行
复制
func setAction(_ button: UIView, _ selector: Selector?) {
        button.isUserInteractionEnabled = true
        let gesture = UITapGestureRecognizer(target: self, action: selector)
        button.addGestureRecognizer(gesture)
    }

@objc func hello(){
  print("Hello")
}

我有一个名为menu的UIView控制器,当我按下它时,我想让它打印出"Hello“。

如果我执行方法1,我会得到一个错误。

代码语言:javascript
运行
复制
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView hello:]: unrecognized selector sent to instance 0x11fd4ca30'

如果我使用方法2,它工作得很好。

1- menu.addAction(#selector(hello))

2- setAction(menu, #selector(hello))

但我可能会经常用到这个。如何通过扩展将操作添加到UIView?

EN

回答 1

Stack Overflow用户

发布于 2021-11-10 05:56:12

在扩展磁带手势中,在UIView类中找不到hello方法。

代码语言:javascript
运行
复制
extension UIView {
public func addAction(_ selector: Selector, target: AnyObject) {
        isUserInteractionEnabled = true
        let gesture = UITapGestureRecognizer(target: target, action: selector)
        self.addGestureRecognizer(gesture)
    }
}

addAction方法中为操作的目标添加一个参数。

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

https://stackoverflow.com/questions/69908442

复制
相关文章

相似问题

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