您可以做的是在按钮处理程序期间禁用用户交互。所以在选择器中做:
-(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,您会看到所有的点击都被捕获到了这里。