Ios UITapgestureRecognitor中的objective c mkmapview如何测试他们是否点击了注释
我允许用户点击屏幕上的任何位置,也允许他们点击注释以显示与注释相关的文本 为了让他们点击屏幕上的任何地方,我设置了一个TapGestureRecognizer 问题是,当他们点击注释时,tapgesturerecognizer事件发生在didSelectAnnotationView之前,因此我在不想点击时执行tapgesturerecognizerIos UITapgestureRecognitor中的objective c mkmapview如何测试他们是否点击了注释,ios,objective-c,mkmapview,Ios,Objective C,Mkmapview,我允许用户点击屏幕上的任何位置,也允许他们点击注释以显示与注释相关的文本 为了让他们点击屏幕上的任何地方,我设置了一个TapGestureRecognizer 问题是,当他们点击注释时,tapgesturerecognizer事件发生在didSelectAnnotationView之前,因此我在不想点击时执行tapgesturerecognizer 我是否可以在tapgesturerecognizer中测试他们是否点击了注释?我遇到了与LongSirte相同的问题,您可以使用UIGestureR
我是否可以在tapgesturerecognizer中测试他们是否点击了注释?我遇到了与LongSirte相同的问题,您可以使用UIGestureRecognizerDelegate来防止调用手势动作
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[MKPinAnnotationView class]])
{
return NO;
}
return YES;
}
注意:别忘了用轻触手势设置委托。解决方案:
在我的标题.h中,我添加了代理:
@interface myVC : UIViewController <UIGestureRecognizerDelegate>
请注意Nirav表示需要添加的代表声明
然后我添加了Nirav的代码,但更改了IF语句:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (([touch.view isKindOfClass:[MKPinAnnotationView class]]) || ([touch.view isKindOfClass:[MKAnnotationView class]]))
{
return NO;
}
return YES;
}
非常感谢这使我走上了正确的道路,但我必须为MKAnnotationView添加一个额外的测试,以使其工作,因为当我点击注释时,MKPinAnnotationView没有被识别。请参阅下面的扩展代码。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if (([touch.view isKindOfClass:[MKPinAnnotationView class]]) || ([touch.view isKindOfClass:[MKAnnotationView class]]))
{
return NO;
}
return YES;
}