触发UIButton
时,会启动UIActivityIndicator
,然后在implementLogin
完成后停止:
-(IBAction)loginButton {
NSLog(@"loginButton triggered");
// Checks the Fields are not empty
if ([sessionIdField.text length] != 0 && [usernameField.text length] != 0 ) {
NSLog(@"Beginning Spinner");
// Displays spinner
[activitySpinner startAnimating];
[self implementLogin];
// Displays spinner
[activitySpinner stopAnimating];
}
}
但是在运行时,微调器不会出现!我已经将微调器设置为“在停止时隐藏”。
当我在视图加载之前将活动指示器设置为动画时,它显示为它应该是,所以我猜它有问题UIButton
...(另外,我正在使用'触摸在里面'为按钮。)
这是一个简单的问题......任何人都可以帮忙吗?
由于
答案 0 :(得分:2)
无论implementLogin
正在做什么(也许是在做网络请求?),它都是在主线程上进行的,这可能会阻止像锭床动画这样的UI更新。
你可以重新编码:
[activitySpinner startAnimating];
dispatch_async(dispatch_get_global_queue(DISPATCH_PRIORITY_DEFAULT, 0), ^{
[self implementLogin];
dispatch_async(dispatch_get_main_queue(), ^{
// Stops spinner
[activitySpinner stopAnimating];
}
}
[代码未经测试,但您明白了。]
这里发生的是你将登录任务发送到后台,而该块最后要做的就是停止主线程上的微调器(作为一个单独的任务)。
答案 1 :(得分:0)
如果没有更多代码,人们只能猜出它不起作用的原因。
我假设'Beginning Spinner'输出正确(?)
如果是这样,您可能没有正确初始化UIActivityIndicatorView
。
它看起来像这样吗?
activitySpinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activitySpinner.hidesWhenStopped = YES;
[view addSubview:activitySpinner];