点击MapView上的按钮是缩放地图..?

时间:2012-06-18 06:49:25

标签: iphone ios ios5 xcode4.2 mkmapview

我有一个MapView,我已经添加了一个包含10个UIButtons的UIView(0,216,320,200)。这个UIView就像一个菜单一样工作,并显示和隐藏某个按钮动作。

这里的问题是,当菜单显示时,当我点击按钮单个ime时,它工作得很好,但是多次快速点击它会使MapView Zoom(在UIView下面包含按钮)。这意味着触摸事件正在传递给MapView。

细节:快速点击按钮会导致MapView缩放,并且当您停止点击时按钮操作会执行。

我该如何防止这种情况?

2 个答案:

答案 0 :(得分: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,你会看到你的所有点击都被捕到了。

答案 1 :(得分:0)

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