自定义 Swift UIGestureRecognizer 不调用分配的操作
Custom Swift UIGestureRecognizer does not call assigned action
我有一个 UIViewController,其中一个视图添加了自定义 UIGestureRecognizer。问题是我从 DialGestureRecognizer 获得了所有触摸打印线,但从未调用过 handleDial 操作。 (iOS 8 / Xcode 6.1.1) 我做错了什么?任何帮助表示赞赏。
@IBOutlet var dialView:UIView?
override func viewDidLoad() {
super.viewDidLoad()
if let _dialView = dialView? {
let recognizer = DialGestureRecognizer(target:self, action:"handleDial:")
_dialView.addGestureRecognizer(recognizer)
}
func handleDial(recognizer:DialGestureRecognizer) {
println("handleDial")
}
}
自定义(精简)UIGestureRecognizer 如下所示
class DialGestureRecognizer:UIGestureRecognizer {
func touchesBegan(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesBegan")
}
func touchesMoved(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesMoved")
}
func touchesEnded(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesEnded")
}
}
您必须从手势识别器内部触发选择器。
要触发选择器,您必须修改 UIGestureRecognizer 的状态 属性。此 属性 是只读的。
要进行修改,您必须按如下方式添加 BridgingHeader。
您需要拥有或创建一个 -Bridging-Header.h
文件来导入 Objective C header 所需的文件。
如果您的应用程序中还没有桥 header 文件,最简单的方法是向您的项目添加一个 objc class,然后 xcode将询问您是否需要一个,然后创建文件并将其绑定到您的设置中。然后您可以删除 objc class.
将下一行添加到 Bridging Header
文件。
#import <UIKit/UIGestureRecognizerSubclass.h>
然后您可以修改 self.state
属性 来触发事件。
override func touchesBegan(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesBegan")
self.state = UIGestureRecognizerState.Began
}
阅读更多信息
http://www.raywenderlich.com/76020/using-uigesturerecognizer-with-swift-tutorial
我有一个 UIViewController,其中一个视图添加了自定义 UIGestureRecognizer。问题是我从 DialGestureRecognizer 获得了所有触摸打印线,但从未调用过 handleDial 操作。 (iOS 8 / Xcode 6.1.1) 我做错了什么?任何帮助表示赞赏。
@IBOutlet var dialView:UIView?
override func viewDidLoad() {
super.viewDidLoad()
if let _dialView = dialView? {
let recognizer = DialGestureRecognizer(target:self, action:"handleDial:")
_dialView.addGestureRecognizer(recognizer)
}
func handleDial(recognizer:DialGestureRecognizer) {
println("handleDial")
}
}
自定义(精简)UIGestureRecognizer 如下所示
class DialGestureRecognizer:UIGestureRecognizer {
func touchesBegan(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesBegan")
}
func touchesMoved(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesMoved")
}
func touchesEnded(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesEnded")
}
}
您必须从手势识别器内部触发选择器。 要触发选择器,您必须修改 UIGestureRecognizer 的状态 属性。此 属性 是只读的。
要进行修改,您必须按如下方式添加 BridgingHeader。
您需要拥有或创建一个 -Bridging-Header.h
文件来导入 Objective C header 所需的文件。
如果您的应用程序中还没有桥 header 文件,最简单的方法是向您的项目添加一个 objc class,然后 xcode将询问您是否需要一个,然后创建文件并将其绑定到您的设置中。然后您可以删除 objc class.
将下一行添加到 Bridging Header
文件。
#import <UIKit/UIGestureRecognizerSubclass.h>
然后您可以修改 self.state
属性 来触发事件。
override func touchesBegan(touches:NSSet!, withEvent event:UIEvent!) {
println("touchesBegan")
self.state = UIGestureRecognizerState.Began
}
阅读更多信息 http://www.raywenderlich.com/76020/using-uigesturerecognizer-with-swift-tutorial