Tôi có một MKMapView
với 2 nút trên đó: phóng to và thu nhỏ.setRegion: MKMapView không phản hồi
Tôi nhận thấy rằng khi tôi sử dụng chúng, tôi không thể kéo bản đồ để thu phóng nữa cho đến khi hoạt ảnh được thực hiện.
Tôi có các nút của mình được gắn vào setRegion
trên một khoảng nhỏ hơn hoặc lớn hơn so với hiện tại.
Tôi đã thử thêm UIPinchGestureRecognizer
vào bản đồ của mình để dừng hoạt ảnh và cho phép pinch hoạt động. Đây là cách tôi đã làm điều đó:
Tôi đã thêm một biến số Bool
giữ cho dù bản đồ hiện có đang hoạt ảnh từ một lần nhấn trên các nút hay không.
func pinchRecognized() {
if animating {
var region = self.region
region.span.latitudeDelta += 0.001
setRegion(region, animated: false)
animating = false
}
}
tôi ghi đè setRegion như thế này:
override func setRegion(_ region: MKCoordinateRegion, animated: Bool) {
if (animated)
{
animating = true
super.setRegion(region, animated: animated)
perform(#selector(noLongerAnimating), with: nil, afterDelay: 1)
}
else
{
super.setRegion(region, animated: animated)
}
}
func noLongerAnimating() {
animating = false
}
Những công việc trong việc ngăn chặn các hình ảnh động, nhưng nhúm không được công nhận bởi bản thân bản đồ để phóng to, mặc dù tôi làm điều này:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
Tôi đoán số setRegion
trong số pinchRecognized
vi phạm, nhưng tôi không biết cách khác để dừng hoạt ảnh.
Theo yêu cầu, mã nút, cả hai nút sử dụng phương pháp này, phóng to sử dụng 0,5, thu nhỏ sử dụng 2:
func zoomTo(delta: Double, animated: Bool) {
var region = self.region
var span = region.span
span.latitudeDelta *= delta
span.longitudeDelta *= delta
if (span.latitudeDelta < 180 && span.longitudeDelta < 180)
{
region.span = span
setRegion(region, animated: animated)
}
}
Edit: tôi đã cố gắng thiết lập các setRegion
(một trong đó dừng hoạt hình) trong số gestureRecognizer:shouldRecognizeSimultaneouslyWith:
, nhưng ở đó nó không được gọi trong khi làm động bản đồ.
Chỉnh sửa: Sau khi thử những gì @robinb đề xuất, tôi thấy rằng chú thích của tôi cập nhật nhanh hơn bản đồ của tôi, gợi ý rằng khu vực được đặt, nó chỉ chờ đợi một cái gì đó để cập nhật bản đồ.
Bạn có thể gửi nút phương pháp mã của bạn? – CodeChanger
@CodeChanger Cập nhật câu hỏi – vrwim
bất kỳ lý do cụ thể nào cho ghi đè setRegion: chức năng? –