0

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

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

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

我怎样才能防止这种情况?

4

2 回答 2

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,您会看到所有的点击都被捕获到了这里。

于 2012-06-18T08:22:19.517 回答
0

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

于 2012-06-18T11:37:28.733 回答