我所想要做的是創造的MKMapView自定義標註泡沫,只是因爲它是在http://blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/解釋,但似乎有在原本很好地完成應用程序的一些錯誤。例如,當您將自定義標註氣泡打開並滾動時,在某個點上,地圖會滾動回打開的標註。縮放有時也會觸發此錯誤。有沒有人能夠解決這些問題?對不起創建一個新問題(因爲有一對夫婦正在處理自定義標註泡泡),但我沒有足夠的代表點來回答評論。定製標註泡沫的MKMapView
1
A
回答
-1
解決方法是在CalloutMapAnnotationView:didMoveToSuperview, 如果我們取消選擇註釋,則不要調用adjustMapRegionIfNeeded。
所以我修正它的方式是在我的mapViewController:didDeselectAnnotationView中,我從MapView中刪除了Annotation之前,將一個非零標記值賦給BasicMapAnnotationView。我選擇了159.
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
// distinguish between the map deselecting this and the user tapping on the callout.
// in the former case, we want to deselect as normal; latter case, show coupon detail.
if ([view isKindOfClass:[BasicMapAnnotationView class]]) {
if (((BasicMapAnnotationView *)view).calloutMapAnnotation) {
if (!((BasicMapAnnotationView *)view).preventSelectionChange) {
((BasicMapAnnotationView *)view).tag = 159; // prevent adjusting map - see CalloutMapAnnotationView
[mapView removeAnnotation: ((BasicMapAnnotationView *)view).calloutMapAnnotation];
// if we're deselecting the currently selected one, null out self.selectedAnnotationView
// Otherwise, the map view is deselecting this one in order to select another one
// and the timing is such that this nulling happens first, and the newly set AV would have no value for this.
if ((BasicMapAnnotationView *)view == self.selectedAnnotationView) {
self.selectedAnnotationView=nil;
}
((BasicMapAnnotationView *)view).calloutMapAnnotation = nil;
}
}
}
}
然後,在CalloutMapAnnotationView中,我檢查這個值,如果找到了,我不調整地圖。
- (void)didMoveToSuperview {
if (self.parentAnnotationView) {
if (self.parentAnnotationView.superview) {
// null superview means it's been removed from map, and adjustMap gets wrong parentOrigin based on null superview,
// and recenters the map somewhere in Antarctica. The Ross Ice Shelf has no coupons except for frozen penguin eggs.
if (self.parentAnnotationView.tag != 159) {// Don't adjust map region on deselect.
//159 hardcoded in MapViewController:didDeselectAnnotationView
[self adjustMapRegionIfNeeded];
}
[self animateIn];
}
}
}
相關問題
- 1. iPhone MKMapView強制標註泡泡
- 2. 標註泡泡MKMapView移動問題
- 3. 鈦 - 自定義地圖註釋泡沫?
- 4. 圖像/按鈕上的iPhone SDK註釋/標註泡沫按
- 5. 如何更改註釋標註泡沫的高度,一個MapView
- 6. SSRS BIDS 2008泡沫圖 - 泡沫尺寸
- 7. 泡沫和選擇標記
- 8. 泡沫:數組
- 9. 泡沫圖\注入圖片insead的氣泡
- 10. 錯誤味精製造新的泡沫
- 11. Highcharts - 泡沫圖需要更小的泡沫面前更大
- 12. Python,泡沫,錯誤
- 13. 應該DOMNodeInsertedIntoDocument泡沫?
- 14. 泡沫排序MIPS
- 15. 肥皂,Python,泡沫
- 16. 修改CSS泡沫
- 17. 自定義MKPinAnnotation標註泡泡類似於默認標註泡泡
- 18. 繪製泡沫編程箭頭
- 19. 如何字典轉化爲泡沫複合泡沫型
- 20. 蟒蛇泡沫的UsernameToken
- 21. 在定製的MKAnnotation上顯示Apple的呼叫泡沫
- 22. 實現短泡沫和冒泡排序
- 23. CSS語音氣泡:如何在泡沫
- 24. 我如何泡泡沫結果?
- 25. 躍遷D3 - 複製泡沫,而不是氣泡轉變
- 26. 泡沫排序問題C++
- 27. 不能創建在泡沫
- 28. 泡沫,排序,策略
- 29. 泡沫分類字母
- 30. D3 - dougnut泡沫餅圖
該示例中是否存在應該關閉標註但不包含標註的代碼?也許你可以在這裏提供一個相關的摘錄,我們可以試着看看爲什麼它不起作用。 – progrmr
我不認爲任何代碼以往任何時候都應該關閉它(模仿蘋果的行爲時),除非他們再次打開它時,它變得可見,也許你意思是? – xci
這絕對是一個錯誤。我已經使用這段代碼一段時間了,但從來沒有碰到過這種情況。基本上,如果您滾動標註泡出來的視圖,然後點擊地圖,它認爲你正在利用註釋和未顯示的標註,所以它的重新調整屏幕,這樣的標註將被顯示。在這個工作一段時間。感謝您發現錯誤。 – Rayfleck