尝试在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")
}
它无法识别水龙头。
有什么想法吗? 感谢
答案 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")
}