UIView点击识别器无法正常工作

时间:2015-08-19 00:23:47

标签: ios swift uiview uigesturerecognizer uitapgesturerecognizer

尝试在UIView上进行工作点击识别:

@IBOutlet weak var mapView_: GMSMapView!
@IBOutlet weak var viewInfo: UIView!

override func viewDidLoad() {
    super.viewDidLoad()
    /* MapView inital values & dependencies */
    let initialLocation = CLLocationCoordinate2DMake(37.78, -122.41)
    let camera = GMSCameraPosition.cameraWithTarget(initialLocation, zoom: 10)

    /* Set up MapView */
    mapView_.camera = camera
    mapView_.myLocationEnabled = true
    mapView_.delegate = self

    var selfTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "viewTapped:")
    viewInfo.addGestureRecognizer(selfTap)
    viewInfo.userInteractionEnabled = true
    mapView_.insertSubview(viewInfo, aboveSubview: mapView_)
}
func viewTapped(recognizer: UIGestureRecognizer) -> Void{
    NSLog("tapped")
}

它无法识别水龙头。

有什么想法吗? 感谢

3 个答案:

答案 0 :(得分:2)

问题"已解决"

由于viewInfo是googlemaps视图的子视图,因此出现问题。 我无法将tap事件委托给viewcontroller,所以我假设了事件" tap"正在发送到mapview。

我从mapview中取出了viewInfo,然后用一些限制来放置我想要的地方。所以viewInfo的父节点现在是viewcontroller,并且可以毫无问题地识别tap事件。

我想这不是更好的解决方案,因为我们需要在故事板中移动子视图时要非常小心,不要让它成为mapview的一部分,但是暂时我无法弄清楚如何将子视图委托给视图控制器。

谢谢大家的帮助。

答案 1 :(得分:0)

您需要从:移除handleTap:,或者您需要将方法更改为handleTap(sender: UITapGestureRecognizer)

答案 2 :(得分:0)

使用:

func handleTap(sender: UITapGestureRecognizer) {
    NSLog("tapped")
}