2013-03-14 39 views
26

如何在iOS中禁用用戶與整個Map(MKMapView)的交互?我只是想禁用縮放,點擊等,並顯示一個靜態地圖。 [self.mapView setUserInteractionEnabled:NO]沒有工作。通過谷歌或其他答案找到沒有工作解決方案在堆棧(請鏈接,如果你找到一個工作的答案..)。針對iOS 5.應該有一個更簡單的方法來做到這一點。如何禁用MKMapView上的用戶交互?

+0

僅供參考,我試過這個,並且該應用因爲不是互動而被拒絕。我沒有使用MKMapView,所以我實際上不能回答你的問題。 – 2013-03-14 19:08:05

+0

@SteveMallory我認爲在一個用例中不應該拒絕這樣做。其他應用程序做到了。看看foursquare:在一個使用案例(Shop Detail View)中,地圖非常鎖定,因爲內容上下文是單店。 – sean 2013-03-14 19:14:11

+0

根據我的經驗 - 通過在地圖視圖中刪除「用戶交互已啓用」中的複選標記,在界面構建器中選擇它時不起作用。但是,通過代碼設置它爲我工作。 – 2014-08-06 20:00:05

回答

59

,關鍵是要禁用縮放和滾動,如:

self.mapView.zoomEnabled = false; 
self.mapView.scrollEnabled = false; 
self.mapView.userInteractionEnabled = false; 
+1

好吧,這個答案大部分適用於我。點擊仍在通過,但這並沒有打破我的用例,用戶無法滾動或縮放,所以我很高興。謝謝! – sean 2013-03-14 21:07:46

+0

利用這一點,我仍然能夠使用兩根手指旋轉和傾斜手勢將中心焦點完全移出視野,儘管它非常乏味。 – SandWyrm 2013-12-13 21:12:04

+0

如果您仍然需要在代碼中執行操作,那麼禁用用戶交互有什麼意義? – Mgamerz 2014-09-20 05:46:48

0

您可以設置MKAnnotationView對NO

enabled屬性禁用變焦,您可以設置mapView.zoomEnabled = FALSE;

啓用

一個布爾值,指示註釋是否啓用。

@property (nonatomic, getter=isEnabled) BOOL enabled 

討論

此屬性的默認值是YES。如果此屬性的值爲NO,則註釋視圖將忽略觸摸事件並且無法選擇。根據此屬性的值,子類也可能會顯示不同的註釋內容。

+0

我不明白這是如何適用於禁用整個地圖的交互。我不希望用戶能夠在整個Map中的任何地方進行交互 - 在這個特定的用例中。 – sean 2013-03-14 19:11:04

1

這個小黑客怎麼樣! 只是在MKMapView的頂部有UIView,它們具有所有相同的幀詳細信息。還要注意的是這種觀點的backgroundColorclearColor

+0

這會使地圖視圖的[合法]按鈕不可點擊嗎?蘋果會這樣嗎? – DeyaEldeen 2016-08-22 12:24:00

17

爲此,您可以在Interface Builder這樣的:

Like this

相關問題