2010-11-24 18 views
3

以下でわかるように、右のボタンを持つアノテーションビューがあります。ユーザーが右ボタンをタップするとポップオーバーが表示されます。問題はユーザーがタップした場所がわからないため、XとYが表示されないためです。右のコールアウトアクセサリビューがタップされたときの位置を追跡する方法

ユーザーがタップした場所、つまりXとYはどのようにして見つけられますか?

HotelAnnotationView *customPinView = [[HotelAnnotationView alloc] initWithAnnotation:theHotel reuseIdentifier:hotelPin]; 

//The right button which allows user to see hotel information 
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
[rightButton addTarget:self action:@selector(showDetailsForHotel:) forControlEvents:UIControlEventTouchUpInside]; 

rightButton.tag = theHotel.id; 
customPinView.rightCalloutAccessoryView = rightButton; 

答えて

6

単に毎回ユーザーがcalloutAccessoryControlをタップデリゲートに呼び出されます

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 

を実装します。あなたはその後、

view.annotation 

私は(ID)を使用して、より良い、このアプローチが好きな理由をご注釈のプロパティにアクセスすることができ、送信者は、あなたが実際に&長い座標緯度だけでなく、あなたの注釈へのアクセスを得るが、ある任意のデータということです実際にそれに関連付けられているので、あなたはあなたのポップであなたのポップでそれを使用することができます。

1

あなたのアクションメソッドshowDetailsForHotel:は、タップされたボタンであるsender引数が含まれています。任意のビューのような座標を求めることができます。

関連する問題