从按钮上的LongPress手势呈现的iOS UIActionSheet错误地需要双击按钮才能解除

从按钮上的LongPress手势呈现的iOS UIActionSheet错误地需要双击按钮才能解除,第1张

概述我有一个tabbar应用程序,在其中一个选项卡中我有一个MKMapView.在这个视图中,我的viewDidLoad我正在为UIButton初始化一个长按手势识别器.按下此按钮并帮助它显示带有5个按钮的UIActionSheet取消按钮.每个按钮代表一个缩放级别:“世界”,“国家”,“州”,“城市”,“当前位置”.选择UIActionSheet中的按钮可将基础MKMapView缩放到该级别. 我遇 我有一个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];}
解决方法 Anna Karenina是对的,link提供了帮助我搞清楚.基本上,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",nil];          [zoomOptionsSheet showFromTabbar:appDelegate.tabbarController.tabbar];    } }
总结

以上是内存溢出为你收集整理的从按钮上的LongPress手势呈现的iOS UIActionSheet错误地需要双击按钮才能解除全部内容,希望文章能够帮你解决从按钮上的LongPress手势呈现的iOS UIActionSheet错误地需要双击按钮才能解除所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1056045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存