9

私はswiftを使ってアプリを作成しています。ViewController の 1 つに、プログラムで作成した GMSMapView があります。マップをクリックしたときにアクションをトリガーする機能をユーザーに持たせたい。

私がやった事 :

import UIKit

class MapViewController: UIViewController, GMSMapViewDelegate {

let mapView = GMSMapView()

override func viewDidLoad() {
        super.viewDidLoad()

        mapView.delegate = self
        mapView.settings.scrollGestures = false
        mapView.frame = CGRectMake(0, 65, 375, 555)
        view.addSubview(mapView)


        var tap = UITapGestureRecognizer(target: self, action: "tap:")
        mapView.addGestureRecognizer(tap)
}

func tap(recogniser:UITapGestureRecognizer)->Void{
        println("it works")
    }

}

touchesBegan をオーバーライドしようとしましたが、うまくいきませんでした。mapView.userInteractionEnabled = true を挿入しようとしましたが、機能しませんでした...

何か案が?

4

3 に答える 3

8

でなんとかできました

func mapView(mapView: GMSMapView!, didTapAtCoordinate coordinate: CLLocationCoordinate2D) {
        println("It works")
    }

しかし、他の解決策がうまくいかなかった理由を誰かが説明してくれたら、それは素晴らしいことです!

于 2014-11-19T12:56:07.297 に答える
1

マップ ビューには、パン、ズームなどのための独自のジェスチャ レコグナイザーが既にあります。

そのため、複数のジェスチャ認識エンジンを処理する必要があることをシステムに伝える必要があるでしょう。

UIGestureRecognizerDelegateプロトコルの一部として:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}
于 2014-11-19T13:12:01.913 に答える