4

我有自定义类,它有 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
4

0 回答 0