作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当触发 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];
}
}
但是在运行时,微调器没有出现!我已将微调器设置为“停止时隐藏”。
当我将事件指示器设置为在 View 加载之前进行动画处理时,它会按应有的方式显示,因此我猜测 UIButton
有问题...(另外,我使用“Touch Up Inside”按钮。)
这是一个简单的问题...有人可以帮忙吗?
谢谢
最佳答案
无论 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];
}
}
[代码未经测试,但您明白了。]
这里发生的事情是,您将登录任务分派(dispatch)到后台,并且该 block 要做的最后一件事是停止主线程上的微调器(作为单独的任务)。
关于iphone - UIActivityIndicatorView 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9384461/
我是一名优秀的程序员,十分优秀!