我有一个MapView,我已经添加了一个包含10个UIButtons的UIView(0,216,320,200)。这个UIView就像一个菜单一样工作,并显示和隐藏某个按钮动作。
这里的问题是,当菜单显示时,当我点击按钮单个ime时,它工作得很好,但是多次快速点击它会使MapView Zoom(在UIView下面包含按钮)。这意味着触摸事件正在传递给MapView。
细节:快速点击按钮会导致MapView缩放,并且当您停止点击时按钮操作会执行。
我该如何防止这种情况?
答案 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作为子视图来修复它。