1

我正在构建一个应用程序,我想知道用户何时触摸了注释或地图上的其他任何地方。我有一个按钮,只有在选择了注释时才想显示。因此,如果用户在注释后尝试触摸地图上的任何位置(如果不是另一个注释),则使按钮不可见。

目前,我已经尝试过 touchesEnded 方法,但问题是它无法识别注释和着陆。

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

    if([touches isMemberOfClass:[BuildingViewController class]])
        printf("Building");
    else
        printf("Land!");
}

提前致谢。

4

1 回答 1

0

touches是带有类的对象NSSet,因此您可以从中获取对象NSSet并检查它的类成员资格。例如:

UITouch *touch = [touches anyObject];

您可以通过触摸获取 UIView

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!");
}
于 2012-11-15T10:18:09.763 回答