1

アプリを作成していますが、ユーザーがいつ注釈やマップ上の他の場所に触れたかを知りたいです。注釈が選択されている場合にのみ表示したいボタンがあります。したがって、注釈の後にユーザーがマップ上の任意の場所に触れようとすると (別の注釈ではない場合)、ボタンを非表示にします。

現時点では、touchesEnded メソッドを試してみましたが、問題は、注釈と土地を認識しないことです。

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

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

前もって感謝します。

4

1 に答える 1

0

touchesは class を持つオブジェクトで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 に答える