【问题标题】:IOS double tap trigger 2 seguesIOS双击触发2 segues
【发布时间】:2015-12-10 10:23:17
【问题描述】:

我目前正在开发一个基于 https://github.com/stefanoa/SASlideMenu(侧边菜单类)和故事板的 ios 应用程序。

在我的右侧菜单上,我连接了一个带有自定义 segue (SASlideMenuPushSegue) 的按钮。 这在正常使用中工作正常,但如果我在按钮上点击得足够快,我可以设法推送更多视图。

例如,如果我双击按钮,将推送 2 个视图。 我不知道它是从哪里来的。这是segue代码:

-(void) perform{

SASlideMenuRightMenuViewController* source = self.sourceViewController;
SASlideMenuRootViewController* root = source.rootController;
SASlideMenuNavigationController* destination = self.destinationViewController;

[root pushRightNavigationController:destination];
}

知道这个错误的来源吗? 谢谢你的回答。

【问题讨论】:

  • 您是否尝试过限制点击直到 segue 被推送?
  • 我该怎么做?我的代码都没有被调用,segue 直接连接在情节提要中。
  • 这是一个类似的帖子:link to post
  • 这只是一个关于如何触发segue的帖子,它如何防止我的错误发生?无论如何我会尝试的,谢谢你的回答。
  • 这很有用,你可以在用户按下按钮时拦截。

标签: ios cocoa-touch uistoryboard uistoryboardsegue saslidemenu


【解决方案1】:

在里面放一个BOOL isPressed 并检查该按钮之前是否在该特定类中被按下。

-(void) perform
{
     if(!isPressed)
     {
      SASlideMenuRightMenuViewController* source = self.sourceViewController;
      SASlideMenuRootViewController* root = source.rootController;
      SASlideMenuNavigationController* destination = self.destinationViewController;

      [root pushRightNavigationController:destination];
      isPressed = YES;
     }
}

然后重置isPressed。当我提交popovercontroller 时,我遇到了同样的事情,每次我按下按钮时都会按下它,所以我认为我们需要处理这种行为。

【讨论】:

  • 感谢您的回答,那么您什么时候将布尔值重置为 NO 呢?我正在考虑类似的解决方案,但我无法找到重置布尔值的正确位置!
  • 您可以在 viewDidDissapear 中重置,或者您可以从目标控制器调用 NSNotification 以在视图出现时重置该 Bool
  • 我不明白,我必须在我的 viewController 中保留一个 segue 的实例?
  • 这是我从你那里了解到的,我觉得代码就够了,去试试吧。
  • 然后直接从情节提要链接它并在这个方法中监听点击:-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
猜你喜欢
  • 1970-01-01
  • 2017-05-15
  • 2011-03-07
  • 2011-10-30
  • 1970-01-01
  • 2012-01-25
  • 2018-03-31
  • 2014-05-24
  • 2016-12-12
相关资源
最近更新 更多