返回按钮似乎在iOS上无法使用

3
在iOS中,我通过导航控制器进行导航(push),并在viewDidLoad中启动请求。该请求可能需要很长时间,如果用户不想等待请求,我希望他们能够返回。
问题是添加在导航栏中的返回按钮似乎被阻塞直到请求完成。当请求完成时,按钮会记住用户的操作并自动返回。
请求具有响应的代理方法,当应用程序进入此方法时,该按钮会被唤醒并返回。
如果我在请求过程中点击按钮,按钮上不会出现触摸/点击效果,请求结束后也不会出现。只有当我等到请求结束时,按钮才会有一个普通的触摸/点击效果。

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

0

你可以这样启用按钮属性。

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

也可以使用这个

 [button setuserintractionEnable:no];

我确信那不是问题。显然,按钮已启用(从问题中可以看出)。 - Kai Huppmann
那么 @Kai 到底想要什么,如果你理解了,请编辑问题。 - vishiphone
我认为没有必要编辑任何内容。它已经完美地描述了,在请求期间按钮被阻止,但之后它可以正常工作...因此按钮显然是启用的。 - Kai Huppmann
是的,我也这么认为。这就是他写下“问题在于导航栏中添加的返回按钮似乎被阻塞,直到请求完成。”的原因。此外,除了您重复一行代码之外,您的回答没有任何一行编译代码(即使您重复了一行;-))。 - Kai Huppmann
[self performSelectorInBackground:@selector(startRequest) withObject:nil];自我在后台执行选择器@选择器(startRequest) withObject:nil; - Saad

0

将您的请求作为后台线程调用

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

并且请记住在核心数据中也要这样做。这是因为您的UI将被释放,而请求将继续在后台线程中工作,并且然后在后退按钮上实现请求取消。

将obj初始化为

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

当请求完成时

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

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


问题在于当请求完成并且我收到响应时,委托没有被唤醒。 - fsantaolaya
@fsantaolaya 如果你想得到任何有用的回答,请贴出一些代码。 - Kai Huppmann
您可以发送一个具有选择器和代理的对象,并在请求完成后回调。请稍后再查看我的答案,我会进行编辑。 - Saad
现在检查答案,告诉我是否需要更多解释。 - Saad
@Kai 问题是当我尝试请求时,似乎系统执行了"block",但我将尝试以适当的方式编写代码。 - fsantaolaya
@TheSaad 我相信我理解了这段代码,但是听起来有点奇怪 code @interface Obj : NSObject@property (nonatomic, assign) id delegat; @property (nonatomic, assign) SEL select;@end @implementation Obj@synthesize delegat; @synthesize select;@endcode 我会检查一下这是否正常工作 - fsantaolaya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接