我的主视图中添加了子视图(UIImageView
)。我想仅检测子视图中的点击,然后运行'processTap'方法。
检测到点击时,我收到以下异常。
“NSInvalidArgumentException”,原因:' - [UIImageView processTap]: 无法识别的选择器发送到实例“
@selector
部分似乎有问题。
有什么想法吗?
- (void)viewDidLoad
{
// Create a uiimage view, load image
UIImageView *tapView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tap zone.png"]];
tapView.frame = CGRectMake(20, 50, 279, 298);
tapView.userInteractionEnabled = YES;
[self.view addSubview:tapView];
// Initialize tap gesture recognizers
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:tapView
action:@selector(processTap)];
singleTap.numberOfTapsRequired = 1;
[tapView addGestureRecognizer:singleTap];
[super viewDidLoad];
}
- (void)processTap {
if (sessionRunning) {
tapCounter = tapCounter + 1;
_tapCount.text = [NSString stringWithFormat:@"%i",tapCounter];
}
}'
答案 0 :(得分:3)
识别器的目标必须是self
。
// Initialize tap gesture recognizers
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(processTap)];
您有上一个错误,因为您的tapView没有名为processTap
的选择器。
注意强>
来自Apple的文档:
靶
接收器识别手势时发送的动作消息的接收者对象。 nil不是有效值。
因此,在这种情况下,您的操作的收件人是实现processTap
选择器的控制器。