MKMapVIew - Поместите Пин в точку касания - PullRequest
5 голосов
/ 11 октября 2011

Я пытаюсь определить местоположение касания на MKMapVIew, чтобы разместить булавку в этом месте. Могу ли я запечатлеть событие, которое даст мне эту информацию?

Ответы [ 2 ]

8 голосов
/ 12 октября 2011

Вот ответ, переведенный на MonoTouch на C #

Добавьте это к ViewController, удерживающему MKMapView

public override void ViewDidLoad ()
    {
        base.ViewDidLoad ();
        UILongPressGestureRecognizer sgr = new UILongPressGestureRecognizer ();
        sgr.AddTarget (this, new MonoTouch.ObjCRuntime.Selector ("LongPressGesture"));
        sgr.MinimumPressDuration = 1f;
        sgr.Delegate = new LongPressRecognizerDelegate ();
        this.View.AddGestureRecognizer (sgr);
    }

    [Export("LongPressGesture")]
    public void Handle (UIGestureRecognizer recognizer)
    {
        //http://freshmob.com.au/mapkit/mapkit-tap-and-hold-to-drop-a-pin-on-the-map/
        //and
        //http://inxunxa.wordpress.com/2011/03/10/monotouch-longpress/


        if (recognizer.State != UIGestureRecognizerState.Began)
            return;

        // get the point of the   action
        PointF point = recognizer.LocationInView (this.View);

        CLLocationCoordinate2D coord = this.map.ConvertPoint (point, this.map);
        //Add pin annoation here

        LocationAnnotation ann = new LocationAnnotation (new LocationEntity (coord));
        this.map.AddAnnotation (ann);
    }

    public class LongPressRecognizerDelegate : MonoTouch.UIKit.UIGestureRecognizerDelegate
    {
        public override bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch)
        {
            return true;
        }
    }
7 голосов
/ 11 октября 2011
...