点击地图视图上的按钮可以缩放地图



我有一个MapView,我在其上添加了一个UIView(0,216,320,200),包含10个UIButtons。此UIView像菜单一样工作,并在某个按钮操作上显示和隐藏。

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

细节:点击按钮非常快会导致在MapView缩放中,当您停止点击时,按钮操作会执行。

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

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

-(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上的子视图。我通过将 UIView 添加为 self.view 上的子视图来修复它

最新更新