我已经以编程方式创建了UIView并添加UIPanGestureRecognizer到其中:
UIView
UIPanGestureRecognizer
class ViewController: UIViewController{ var preludeView: UIView! override func viewDidLoad() { super.viewDidLoad() initViews() createConstrants() let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: Selector(("handleTap:"))) preludeView.addGestureRecognizer(panGestureRecognizer) } func handleTap(recognizer: UIPanGestureRecognizer) { print("WORKING!!!!") } func initViews() { ... } func createConstrants() { ... } }
但是当我触摸视图时,Xcode抛出错误:
2016-07-13 09:24:29.918 Draft_Hypa_02 [661:83024]-[Draft_Hypa_02.ViewController handleTap:]:无法识别的选择器已发送到实例0x17d94a10 2016-07-13 09:24:29.921 Draft_Hypa_02 [661:83024] 正在终止应用由于未捕获的异常’NSInvalidArgumentException’,原因是: ‘ - [Draft_Hypa_02.ViewController handleTap:]:发送到实例0x17d94a10无法识别的选择’ 第一掷调用堆栈:(0x249cf91b 0x2416ae17 0x249d52b5 0x249d2ee1 0x248fe238 0x294ae9eb 0x290e984f 0x28f7aff1 0x294afd4f 0x28f3ba57 0x28f38017 0x28f78ec9 0x28f7867b 0x28f49125 0x28f476d3 0x24991dff 0x249919ed 0x2498fd5b 0x248df229 0x248df015 0x25ecfac9 0x28fb1189 0x93144 0x24587873)libc ++ abi.dylib:以类型为NSException的未捕获异常终止
但是,如果我在handleTap函数中删除参数并在中删除冒号,则Selector(("handleTap:"))一切正常!
handleTap
Selector(("handleTap:"))
已经花了一天的时间尝试解决此问题,非常感谢您的帮助!
如果您使用的是swift3,则selector应该像这样
swift
selector
#selector(self.handleTap(recognizer:))