【问题标题】:Back button seems disabled iOS后退按钮似乎已禁用 iOS
【发布时间】:2012-05-12 19:35:24
【问题描述】:

在 iOs 中,我使用导航控制器进行导航(推送),并在 viewDidLoad 中发起请求。此请求可能需要很长时间,如果用户不想等待请求,我希望他们能够返回。

问题在于导航栏中添加的后退按钮似乎被阻止,直到请求完成。该按钮会记住用户交互以及请求完成时自动返回。

请求有一个响应的委托方法,当应用程序进入该方法时,按钮会唤醒并返回。

如果我在请求期间触摸,则触摸/单击效果不会出现在按钮上,并且在请求结束时也不会出现。当我等到结束时,按钮对触摸/单击按钮具有正常效果。

【问题讨论】:

  • 你的主线程被请求阻塞了。请发布一些代码。
  • @fsant 如果您从下面的帖子中找到答案,请通知我们

标签: iphone ios uinavigationcontroller uinavigationbar uinavigationitem


【解决方案1】:

为此,您可以像这样启用按钮属性。

 [button setEnable:Yes];
 [button setEnable:Yes];

也用这个

 [button setuserintractionEnable:no];

【讨论】:

  • 我确定这不是问题所在。显然按钮 已启用 (从问题中可以看出)。
  • 然后@Kai 他到底想要什么,如果您理解,请编辑问题。
  • 我不认为,有任何需要编辑的东西。完美地描述了按钮在请求期间被阻止,但之后它起作用了......所以按钮显然是启用的。
  • 是的,我想是的。这就是为什么他写了“问题在于导航栏中添加的后退按钮似乎被阻止,直到请求完成。”此外,除了不回答问题之外,您的答案不包含任何单行编译代码(即使您将其翻了一番;-))。
  • [self performSelectorInBackground:@selector(startRequest) withObject:nil];
【解决方案2】:

在后台线程中调用您的请求

    [self performSelectorInBackground:@selector(startRequest) withObject:nil];

对于核心数据也要记住这一点。这是您的 UI 将被释放,请求将继续在后台线程中工作 然后在返回按钮上实现请求取消

初始化obj为

Obj *obj = [[Obj alloc] initWithDelegate:self 选择器:@selector(requestFinished)]; [self performSelectorInBackground:@selector(startRequest:) withObject:obj]; obj 具有属性 SEL 选择器和 id 委托;

请求完成时

检查 if ([obj.delegate respondsToSelector:obj.selctor]) { [obj.delegate performSelector:obj.selector]; }

如果您需要更多规格,请告诉我

【讨论】:

  • 这个问题是当请求完成并且我得到响应时委托没有被唤醒
  • @fsantaolaya 如果您想问任何问题,请发布一些代码
  • 您可以发送一个具有选择器和委托的对象,并在请求完成时回调。几分钟后我编辑后再次查看答案
  • 现在检查分析器并告诉我是否需要更多解释
  • @Kai 提示是,当我尝试请求时,系统似乎执行了“阻止”,但我会尝试以适当的方式放置代码。
猜你喜欢
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多