- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经研究了几天,但没有发现任何工作。
这是所需的过程:用户在弹出窗口上按下回车按钮 -> ActivityIdicator 出现 -> 保存过程发生 -> ActivityIndicator 消失。
但是,由于某种原因,ActivityIndicator 直到进程完成后才会显示,使其完全无用。
我尝试遵循此处描述的过程:UIActivityIndicator not working properly?
这是弹出窗口的代码
-(void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
// the user clicked one of the Enter/Cancel buttons
[self performSelector:@selector(DisplaySpinner) withObject:nil afterDelay:0];
if (buttonIndex == 1)
{
[self performSelector:@selector(EnterButtonClicked) withObject:nil afterDelay:0];
}
else
{
NSLog(@"Name Cancel Clicked");
}
[NameField resignFirstResponder];
}
-(void)DisplaySpinner{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
[self.view addSubview:loadingIndicator];
[loadingIndicator startAnimating];
[pool release];
}
最佳答案
该应用程序不会更新屏幕以显示 UIActivityIndicatorView
直到主运行循环重新获得控制权。如果您的处理任务阻塞了主线程,则在完成之前不会进行任何 UI 更新。您应该异步进行处理。
当旋转事件发生时,willRotate...
和 willAnimateRotation...
通过主运行循环一次性调用方法。因此,您在显示事件指示器之前阻止该方法。
要完成这项工作,您需要将方法任务推送到另一个线程。当工作完成时,该方法将回调此 View Controller ,以便可以更新 View 。我会在 willAnimateRotation...
中显示事件指示器方法。
您需要做的是强制 UIActivityIndicatorView
即使运行循环不会结束也开始显示。一种方法是——
[self performSelector:@selector(animation) withObject:nil afterDelay:0]
-(void)startSpinner
{
NSAutoreleasepool *pool = [[NSAutorepleasepool alloc]init];
[indicatorView startAnimating];
[pool release];
}
performSelector
设置一个定时器来执行
animation
当前线程的运行循环上的消息。定时器配置为在默认模式下运行 (
NSDefaultRunLoopMode
)。当计时器触发时,线程尝试将消息从运行循环中取出并执行选择器。如果 run loop 正在运行并且处于默认模式,则成功;否则,计时器会一直等待,直到运行循环处于默认模式。
关于iPhone UIActivityIndicator 直到进程完成后才会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688946/
我正在使用 @ConditionalOnProperty 创建一个 FileCompressor bean: @Bean @ConditionalOnProperty(prefix = "file.r
我是一名优秀的程序员,十分优秀!