我有自定义类,它有 UIView。我希望它在点击视图时执行操作。当我添加:
[(UIControl*)customClass addTarget:self
action:@selector(doAction:)
forControlEvents:UIControlEventAllTouchEvents];
当我单击视图时,有时会触发“doAction”,但大多数情况下不会。但我注意到,如果我添加:
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doAction:)];
[(UIControl*)customClass addGestureRecognizer:tapGesture];
这两个识别器有什么区别?我知道,UIControl 有委托和 UIGestureRecognizer,但不明白为什么控制并不总是能捕捉到触摸。
问题是我的发件人在手势识别器的情况下是错误的,因为我无法从中提取一些数据。
- (void)doAction:(customClass*)sender {
switch (sender.actionType) { // do something ... } }
如何访问它?断点中显示的结构是这样的:
sender -> UIGestureRecognizer -> _view -> _actionType