【问题标题】:Tapping on Buttons over MapView is zooming the Map..?点击 MapView 上的按钮正在缩放地图..?
【发布时间】:2012-06-18 06:49:25
【问题描述】:

我有一个 MapView,在其上添加了一个 UIView(0、216、320、200),其中包含 10 个 UIButton。这个 UIView 就像一个菜单一样工作,并且在某个按钮动作上显示和隐藏。

这里的问题是,当菜单显示时,当我点击一个按钮时,它可以完美地工作,但是多次点击它会非常快速地使 MapView 缩放(位于包含按钮的 UIView 下)。这意味着触摸事件正在传递给 MapView。

详细信息:在 MapView 缩放中非常快速地点击按钮,并且当您停止点击时执行按钮操作。

如何防止这种情况发生?

【问题讨论】:

    标签: iphone ios ios5 xcode4.2 mkmapview


    【解决方案1】:

    您可以做的是在按钮处理程序期间禁用用户交互。所以在选择器中做:

    -(void)buttonSelector:(id)sender {
        _mapView.userInteractionEnabled = NO;
    
        // ... do what your button needs to do
    
        _mapView.view.userInteractionEnabled = YES;
    }
    

    当然,这假设您的按钮在地图视图之前获取事件...我认为应该这样做,因为它位于地图视图的顶部。

    要处理快速点击,您可以创建 UIButton 的子类并使用以下代码:

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        _mapView.userInteractionEnabled = NO;
    }
    
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
    {
        _mapView.userInteractionEnabled = YES;
    }
    

    在构建器中将 UIButton 的类更改为您的子类。如果您在传递给touchesEnd 方法的集合中调试触摸并查看tapCount,您会看到您的所有点击都被捕捉到了这里。

    【讨论】:

    • 可以,但不起作用。问题是,UIView 在 MapView 之上,但如果快速点击,MapView 会首先获得事件..
    • 啊,是的,因为它以双击/多次点击手势的形式拾取它。因此,操作按钮的正常手势是单击 - 您是否希望用户使用快速点击来与您的按钮进行交互,或者这是一个边缘情况?
    • 由于这个问题,QA 将应用程序发回给开发人员.. :(
    • 好的,我会发布另一个可能对您有帮助的答案。
    【解决方案2】:

    是的,所以问题是,我在 MapView 上添加 UIView 作为子视图。我通过在 self.view 上添加 UIView 作为子视图来修复它

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 2011-10-14
      • 2014-08-30
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      相关资源
      最近更新 更多