Objective c 我是否可以检测用户是否接触过地图上除注释以外的任何地方?
我正在构建一个应用程序,我想知道用户何时触摸了注释或地图上的任何其他地方。我有一个按钮,仅在选择注释时才显示该按钮。所以,如果用户在注释后尝试触摸地图上的任何地方(如果不是另一个注释),则使按钮不可见 目前,我已经尝试了touchesend方法,但问题是它不能识别注释和landObjective c 我是否可以检测用户是否接触过地图上除注释以外的任何地方?,objective-c,ios,mkannotation,Objective C,Ios,Mkannotation,我正在构建一个应用程序,我想知道用户何时触摸了注释或地图上的任何其他地方。我有一个按钮,仅在选择注释时才显示该按钮。所以,如果用户在注释后尝试触摸地图上的任何地方(如果不是另一个注释),则使按钮不可见 目前,我已经尝试了touchesend方法,但问题是它不能识别注释和land - (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ if([touches isMemberOfClass:[BuildingV
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
if([touches isMemberOfClass:[BuildingViewController class]])
printf("Building");
else
printf("Land!");
}
提前感谢。
触摸
是类为NSSet
的对象,因此您可以从NSSet
获取对象并检查其类成员资格。例如:
UITouch *touch = [touches anyObject];
你可以通过触摸屏查看
UIView *touchedView = touch.view;
然后检查此UIView类并将其与您的进行比较
[touchedView isMemberOfClass:[BuildingView class]]
我还建议您检查NSSet中的所有接触
BOOL isBuilding = NO;
for(UITouch *touch in touches){
if([touch.view isMemberOfClass:[BuildingView class]]){
isBuilding = YES;
break;
}
}
if(isBuilding){
printf("Building");
}else{
printf("Land!");
}
你好,丹尼斯。谢谢你的关注。我采纳了你的建议,但仍然面临同样的问题。触摸注释,但打印出土地!我可以确认是否触摸了批注,因为在didSelectAnnotationView方法中,我激活了按钮,并且它工作正常。我也试过,但还是…:(好的,你能在(UITouch*touch-in-Touchs){之后添加行NSLog(@“%@,[BuildingView类])并将打印出来的内容复制到这里吗?好的。你会认为我是在开玩笑,但这里是打印出来的内容:2012-11-15 13:02:01.811 CoL[849:c07]BuildingView Land!哦,我的错误。请将NSLog(@“%@,[BuildingView类])更改为NSLog(@“%@”,[touch.view class]);并复制打印出来的内容不用担心!我想知道如何在前一行打印不同的类,但Obj-C总是让我惊讶:)。我可以从这里看到错误。现在,它正在打印出来,2012-11-15 13:30:41.037 CoL[1047:c07]MKPinAnnotationView Land!…需要重新定义自定义BuildingView类或更改“isMemberOf[]”语句吗?