我在主视图中添加了一个子视图(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];
}
}'
最佳答案
识别器的目标必须是self
。
// Initialize tap gesture recognizers
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(processTap)];
您有上一个错误,因为您的tapView没有名为
processTap
的选择器。注意
从Apple的文档中:
目标
一个对象,它是接收者在识别手势时发送的动作消息的接收者。 nil不是有效值。
因此,在这种情况下,您的操作的接收者是实现
processTap
选择器的控制器。