【问题标题】:UIView tap recognizer not workingUIView点击识别器不起作用
【发布时间】:2015-08-19 00:23:47
【问题描述】:

尝试在 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")
}

它无法识别水龙头。

有什么想法吗? 谢谢

【问题讨论】:

  • 你能发布整个代码吗?因为如果两个答案都不起作用,我们需要看看真正的问题是什么

标签: ios swift uiview uigesturerecognizer uitapgesturerecognizer


【解决方案1】:

问题“已解决”

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

我从 mapview 中取出 viewInfo,并在我想要的地方放了一些约束。所以 viewInfo 的父级现在是 viewcontroller 并且点击事件被识别没有任何问题。

我想这不是更好的解决方案,因为我们在故事板中移动子视图时需要非常小心,以免它成为 mapview 的一部分,但是我不知道如何将子视图委托给 viewcontroller。

感谢大家的帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 两个选项都试过了,还是没认出来。 TY
    【解决方案3】:

    使用:

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

    【讨论】:

    • 我的代码是: var selfTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "viewTapped:" selfTap.numberOfTapsRequired = 1 backGrayView.addGestureRecognizer(selfTap); backGrayView.userInteractionEnabled = true; func viewTapped(识别器:UIGestureRecognizer) -> Void{ if Recognizer.numberOfTouches() == 1{ 代码在这里 } }
    • 奇怪,还是不行,复制粘贴你的代码,稍微适应一下我的观点。是否有可能成为谷歌地图的子视图? mapView_.insertSubview(viewInfo, aboveSubview: mapView_)
    • 如何把你的视野放在前面?
    • 已经是了,我无法在子视图上点击地图进行交互
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多