我有6种不同的观点,我给它们标记为1,2,3,4,5,6。我将对象库中的UITapGestureRecogniser
添加到了故事板,并通过CTRL +从视图拖动到gestureRecognizers
,对其进行了所有6次视图UITapGestureRecogniser
。
现在在下面的方法中,我试图通过点击不同的视图获得标记。
- (IBAction)colorTapRecognizer:(UITapGestureRecognizer *)sender {
UIView *tappedView= sender.view;
NSLog(@"%d",tappedView.tag );
}
但它总是向我显示相同的标签。即如果我点击它并且它是第一次3
,那么通过点击其他视图也是一样的。
答案 0 :(得分:3)
每个View都需要自己的Gesture Recognizer集。这是一段适合您的代码。
-(void)addTapGesturesToViews
{
int maxViewTag = 6; // tags must be consective (are in your case)
for(int i =1; i<= maxViewTag;i++)
{
UIView * view = [self.view viewWithTag:i];
UITapGestureRecognizer * tapGest = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(colorTapRecognizer:)];
tapGest.numberOfTapsRequired = 1;
[view addGestureRecognizer:tapGest];
}
}