Tôi nhận được khá thất vọng với những hạn chế của MKMapKit. Vấn đề hiện tại của tôi phải liên quan đến thứ tự z của các khung nhìn chú thích, đặc biệt khi nó liên quan đến các lần chạm. Nếu bạn chấp nhận thứ tự z mặc định mà bộ bản đồ cung cấp cho bạn:Z-thứ tự của MKAnnotationViews
- Thứ tự xuất hiện ngẫu nhiên. Thứ tự z không liên quan đến thứ tự các chú thích đã được thêm vào.
- Nếu một chú thích kết thúc trên đầu trang của một chú thích khác, chạm vào chú thích trên cùng thường sẽ hiển thị chú thích cho chú thích dưới cùng. Nó có vẻ như phát hiện hit thậm chí không tôn trọng thứ tự vẽ. Có chuyện gì thế?
tôi đã cố gắng giải quyết # 1 sử dụng một cái gì đó tương tự như đoạn mã sau được tìm thấy trên các trang web (được thiết kế để cung cấp cho một số quyền kiểm soát z-trật tự)
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views { for (MKAnnotationView * annView in views) { TopBottomAnnotation * ann = (TopBottomAnnotation *) [annView annotation]; if ([ann top]) { [[annView superview] bringSubviewToFront:annView]; } else { [[annView superview] sendSubviewToBack:annView]; } } }
Chạy qua các quan điểm chú thích thông qua mapView: didAddAnnotationViews: và điều chỉnh thứ tự z của chúng dường như sửa # 1. Vấn đề ở đây là các chế độ xem chú thích không còn luôn ở trên cùng với chế độ xem chú thích. MapKit dường như rất bối rối về các lớp (chú thích nên được vẽ trong một lớp phía trên tất cả các khung nhìn chú thích). Tôi thậm chí có thể tìm ra cách nó bị lẫn lộn vì tất cả các MKAnnotationViews bạn nhận được có cùng một superview (một lớp MKOverlayView riêng). Bạn sẽ nghĩ rằng bất kỳ thiết kế hợp lý nào sẽ thu hút chú thích về chế độ xem lớp phủ này.
Có ai đã giải quyết # 1 hoặC# 2 thành công không?
Bạn đã nhận được lớp TopBottomAnnotation ở đâu? –
Các TopBottomAnnotation là tên của lớp chú thích của bạn xem –
... gần 6 năm sau đó và tôi có cùng một vấn đề. Làm thế nào điều này đã không được cố định? – Tys