詳細開示ボタンを使用して MKAnnotationView を作成しています。
mapView: viewForAnnotation: プレースホルダー ボタンを作成するだけです。
// the right accessory view needs to be a disclosure button ready to bring up the photo
aView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
mapView で: didSelectAnnotationView: 実際に使用するボタンを作成します (関連するタグを使用)
// create a button for the callout
UIButton *disclosure = [self.delegate mapController:self buttonForAnnotation:aView.annotation];
NSLog(@"DisclosureButton: %@", disclosure);
// set the button's target for when it is tapped upon
[disclosure addTarget:self.delegate action:@selector(presentAnnotationPhoto:) forControlEvents:UIControlEventTouchUpInside];
// make the button the right callout accessory view
aView.rightCalloutAccessoryView = disclosure;
ログでは、ボタンは完全にインスタンス化され、正しいタグが設定されているように見えます。
これはボタン作成者です:
/**
* returns an button for a specific annotation
*
* @param sender the map controller which is sending this method to us (its' delegate)
* @param annotation the annotation we need to create a button for
*/
- (UIButton *)mapController:(MapController *) sender
buttonForAnnotation:(id <MKAnnotation>) annotation
{
// get the annotation as a flickr photo annotation
FlickrPhotoAnnotation *fpa = (FlickrPhotoAnnotation *)annotation;
// create a disclosure button used for showing photo in callout
UIButton *disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
// associate the correct photo with the button
disclosureButton.tag = [self.photoList indexOfObject:fpa.photo];
return disclosureButton;
}
注釈を選択すると問題が発生します。アノテーションを選択して詳細開示ボタンをタップしても数秒間何も起こりません。ただし、注釈を数回タップして元に戻し、ボタンをテストした後、最終的には期待どおりに機能します。
奇妙な遅延で何が起こっているのですか?ボタンが機能しようとしているときに、タップして表示されるまで、アルファが 0.0 に設定されているように見えることがあります。
真剣に、私が遭遇した奇妙な問題の 1 つです。