rightCalloutAccessoryViewが以下のデリゲートメソッドでタップされているかどうかを検出したいと思います。calloutAccessoryControlTappedデリゲートでどのアクセサリビューがタップされているかを検出
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)contro
rightCalloutAccessoryViewが以下のデリゲートメソッドでタップされているかどうかを検出したいと思います。calloutAccessoryControlTappedデリゲートでどのアクセサリビューがタップされているかを検出
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)contro
calloutAccessoryControlTapped
方法はleftCalloutAccessoryView
とrightCalloutAccessoryView
両方のタップアクションのためにトリガされます。アクセサリビューを区別するために、アクセサリビューを作成する際にアクセサリビューの両方にtag
を設定することができます。 calloutAccessoryControlTapped
メソッドでは、タグ値を確認し、タグ値に応じてそれぞれのアクションを実行できます。例えば
、あなたがそれぞれ自分のleft
とright
アクセサリビューのtags
ため1
と2
を設定していることを検討してください。次に、あなたのcalloutAccessoryControlTapped
方法は、次のように
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
if ([control tag] == 1) {
// Left Accessory Button Tapped
} else if ([control tag] == 2) {
// "Right Accessory Button Tapped
}
}
うまく動作しますが、整数タグを使用しない別の方法があるのでしょうか? –
をになります私は、次の実装を使用します。
func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
switch control {
case let left where left == view.leftCalloutAccessoryView:
// tap on left
break
case let right where right == view.rightCalloutAccessoryView:
// tap on right
break
default:
break
}
}
switch
構文がoptionalsことによりleftCalloutAccessoryView
とrightCalloutAccessoryView
にもう少し複雑通常よりも、タグを使用しないようにします。
すでに 'calloutAccessoryControlTapped:'メソッドを実装していますか?または、あなたはそれを実装する方法を知りたいですか?または、これに関する他の問題がいくつかありますか?具体的に。 – EmptyStack
よく2つのアクセサリビューがあります。このデリゲートは実際にはいつ発射されますか?それは左右両方のアクセサリービュー用ですか? rightAccessoryViewがタップされたときにこのイベントを発生させたいだけです。 – aherlambang
calloutAccessoryControlTapped:左と右の両方のビューに対してメソッドがトリガーされます。私はここに答えを掲示しました。それがあなたを助けることを願っています。 – EmptyStack