我有一个自定义 iOS Controller 类,它以编程方式将 UIButton
添加到给定的 UIView
。该按钮有一个与之关联的 UITapGestureRecognizer
,但它仅在自定义 Controller 是嵌入 View 和按钮的 UIViewController
的 @property
时才有效.
参见 https://github.com/vasile/ios-gesture-recognizer/有 2 个按钮示例,第一个不记录点击手势。
谁能解释一下为什么?
最佳答案
一切都与对象的生命周期有关。为了在按钮被点击时成为按钮的目标,目标对象必须在按钮被点击时存在。
第一个按钮(Nothing Will Happen)并非如此,因为目标只是一个局部变量,会立即消失。另一方面,其他目标对象是持久的。例如, View Controller 实例的属性会在 View Controller 存在时一直存在。 View Controller 通常生命周期很长;特别是,如果使用得当,如果按钮是 View Controller 自身 View 的 subview ,它的生命周期与按钮一样长!
关于ios - UITapGestureRecognizer 不(总是)为不同于 UIViewController 的目标工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419485/