2013-03-14 30 views
26

Làm thế nào để bạn vô hiệu hóa tương tác người dùng với toàn bộ Bản đồ (MKMapView) trong iOS? Tôi chỉ muốn vô hiệu hóa phóng to, khai thác, vv và hiển thị một bản đồ tĩnh. [self.mapView setUserInteractionEnabled:NO] không hoạt động. Không tìm thấy giải pháp làm việc nào thông qua Google hoặc các câu trả lời khác tại đây trên Stack (xin liên kết nếu bạn tìm thấy câu trả lời đang hoạt động ..). Nhắm mục tiêu iOS 5. Nên có cách dễ dàng hơn để thực hiện việc này.Làm thế nào để vô hiệu hóa tương tác người dùng trên MKMapView?

+0

FYI, tôi đã thử cách này và ứng dụng đã bị từ chối do không tương tác. Tôi không sử dụng MKMapView, vì vậy tôi không thể trả lời câu hỏi của bạn. –

+0

@SteveMallory Không nên bị từ chối vì làm điều này chỉ trong một trường hợp sử dụng mà tôi nghĩ. Các ứng dụng khác làm điều đó. Có một cái nhìn tại foursquare: Trong một trường hợp sử dụng (Shop Detail View) bản đồ bị khóa khá nhiều tại chỗ có ý nghĩa vì bối cảnh nội dung là một cửa hàng duy nhất. – sean

+0

Từ kinh nghiệm của tôi - nó không hoạt động khi được chọn trong trình tạo giao diện bằng cách xóa dấu kiểm trên "Tương tác người dùng đã bật" cho chế độ xem bản đồ. Tuy nhiên, thiết lập nó bằng mã làm việc cho tôi. –

Trả lời

59

Điều quan trọng là phải vô hiệu hóa zoom và cuộn, chẳng hạn như:

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

Ok câu trả lời này làm việc cho tôi, cho hầu hết các phần. Các vòi vẫn tiếp tục nhưng điều đó không phá vỡ trường hợp sử dụng của tôi và người dùng không thể cuộn hoặc thu phóng vì vậy tôi rất vui. Cảm ơn! – sean

+0

Sử dụng tính năng này, tôi vẫn có thể sử dụng cử chỉ xoay và xoay bằng hai ngón tay để thay thế hoàn toàn tâm điểm trung tâm, mặc dù nó khá là tẻ nhạt. – SandWyrm

+0

Điểm của việc vô hiệu hóa tương tác người dùng là gì nếu bạn vẫn phải thực hiện nó trong mã ...? – Mgamerz

0

Bạn có thể thiết lập thuộc tính cho phép của MKAnnotationView để NO

Đối với việc vô hiệu hóa Zoom, bạn có thể đặt mapView.zoomEnabled = FALSE;

kích hoạt

Một giá trị logic Boolean cho biết các chú thích được kích hoạt.

@property (nonatomic, getter=isEnabled) BOOL enabled 

Thảo luận

Giá trị mặc định của thuộc tính này là YES. Nếu giá trị của thuộc tính này là NO, chế độ xem chú thích sẽ bỏ qua các sự kiện chạm và không thể được chọn. Các lớp con cũng có thể hiển thị nội dung chú thích khác nhau tùy thuộc vào giá trị của thuộc tính này.

+0

Tôi không hiểu cách áp dụng điều này để vô hiệu hóa tương tác với toàn bộ bản đồ. Tôi không muốn người dùng có thể tương tác ở bất cứ đâu trong toàn bộ Bản đồ - trong trường hợp sử dụng cụ thể này. – sean

1

Làm thế nào về hack nhỏ này! chỉ cần đặt UIView trên đầu trang của MKMapView có tất cả các chi tiết khung giống nhau. Cũng lưu ý rằng backgroundColor quan điểm này nên clearColor

+0

sẽ làm cho nút [pháp lý] của chế độ xem bản đồ không thể nhấp được không? sẽ táo như thế này? – DeyaEldeen

17

Bạn có thể làm điều này trong Interface Builder như thế này:

Like this

Các vấn đề liên quan