jmc*_*and 4 uiactionsheet uigesturerecognizer ios
我有一个tabbar应用程序,在其中一个选项卡中我有一个MKMapView.在这个视图中,我的viewDidLoad我正在为UIButton初始化一个长按手势识别器.按下此按钮并帮助它显示带有5个按钮+取消按钮的UIActionSheet.每个按钮代表一个缩放级别:"世界","国家","州","城市","当前位置".选择UIActionSheet中的按钮可将基础MKMapView缩放到该级别.
我遇到的问题是所有按钮(包括取消按钮)都需要双击才能关闭UIActionSheet.这不是预期的行为 - 它应该像按下每个其他UIActionSheet一样按下按钮后解除.第一次按下后,我可以看到地图缩放到UIActionSheet后面的适当级别,所以我知道触摸正在正确的按钮上注册,但是第一次按下时按钮不会突出显示蓝色,并且UIActionSheet不会消失.直到我第二次按下按钮,它才会突出显示蓝色然后消除.
如果我删除了长按手势识别器并将UIActionSheet呈现在"内部触摸"上,那么一切都按预期工作.所以我知道这个手势是以某种方式干扰,任何关于修复或解决方法的想法?或者这是一个应该向Apple报告的错误?
- (void) viewDidLoad {
// intitialize longpress gesture
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(zoomOptions:)];
longPressRecognizer.minimumPressDuration = 0.5;
longPressRecognizer.numberOfTouchesRequired = 1;
[self.currentLocationButton addGestureRecognizer:longPressRecognizer];
}
- (IBAction) zoomOptions:(UIGestureRecognizer *)sender {
NSString *title = @"Zoom to:";
UIActionSheet *zoomOptionsSheet = [[UIActionSheet alloc] initWithTitle:title delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"World", @"Country", @"State", @"City", @"Current Location", nil];
[zoomOptionsSheet showFromTabBar:appDelegate.tabbarController.tabBar];
}
Run Code Online (Sandbox Code Playgroud)
Anna Karenina是对的,提供的链接帮助我解决了问题.基本上,UILongPressGestureRecognizer是一种经历各种状态变化的"连续手势".我需要检查适当的状态,在我的情况下是UIGestureRecognizerStateBegan因为我希望UIActionSheet在按住按钮之后但在释放并停止手势之前呈现.我所要做的只是UIActionSheet在if语句中包装,以检查适当的状态.现在它按预期工作.
- (IBAction) zoomOptions:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) {
NSString *title = @"Zoom to:";
UIActionSheet *zoomOptionsSheet = [[UIActionSheet alloc]
initWithTitle:title
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:@"World", @"Country",
@"State", @"City",
@"Current Location", nil];
[zoomOptionsSheet showFromTabBar:appDelegate.tabbarController.tabBar];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2246 次 |
| 最近记录: |