जैनो के जवाब ने मेरे लिए काम किया, इसलिए मैंने सोचा कि मैं स्विफ्ट 4 / एक्सकोड 9 के लिए एक अद्यतन संस्करण छोड़ दूंगा क्योंकि मैं विशेष रूप से ऑब्जेक्टिव सी में कुशल नहीं हूं और मुझे यकीन है कि कुछ अन्य हैं जो या तो नहीं हैं।
चरण 1: इस कोड को viewDidLoad में जोड़ें:
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(didDragMap(_:)))
panGesture.delegate = self
चरण 2: सुनिश्चित करें कि आपकी कक्षा UIGestureRecognizerDelegate के अनुरूप है:
class MapViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate, UIGestureRecognizerDelegate {
चरण 3: अपने इशारों को अन्य इशारों के साथ काम करने के लिए सुनिश्चित करने के लिए निम्नलिखित फ़ंक्शन जोड़ें:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
चरण 4: और यह सुनिश्चित करने के लिए कि आपका तरीका "खींचें प्रति 50 बार" नहीं है, जैसा कि जानो सही बताता है:
@objc func didDragMap(_ gestureRecognizer: UIPanGestureRecognizer) {
if (gestureRecognizer.state == UIGestureRecognizerState.ended) {
redoSearchButton.isHidden = false
resetLocationButton.isHidden = false
}
}
* अंतिम चरण में @objc के अतिरिक्त पर ध्यान दें। XCode आपके फ़ंक्शन पर इस उपसर्ग को संकलित करने के लिए बाध्य करेगा।
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
काम किया।