集成到搜索栏中的活动指示器不会显示在iPhone SDK中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成到搜索栏中的活动指示器不会显示在iPhone SDK中相关的知识,希望对你有一定的参考价值。
在我的iPhone应用程序中,我想在搜索栏上添加活动指示器。
在搜索时,它应显示活动指示器。
我在XIB中添加了活动指示器并创建了它的插座。
我在搜索完成时将其隐藏,但不显示活动指示器。
问题
我发现搜索功能(比如A)(我为活动指示器设置动画)依次调用另一个函数(比如B),因此主线程用于执行函数B.但是对于动画的活动指示器我们需要主线。
所以我尝试使用performSelectorInBackGround:withObject
方法调用函数B.现在,当我单击搜索时,会显示活动指示器,但功能B的功能不会执行。
什么可以解决这个问题?
你的问题还不够,但是为了开始调试,我会做以下几点。
- 验证活动是否真正连接到您在IB中创建的UIActivityIndicator。 (我会在setHidden:行上设置一个断点,并确保变量不为null。或者抛出一个NSAssert(活动,@“Whoops!actity为null”);在那里。)
- 如果确实设置了变量,我会开始检查它是否在视图层次结构中的正确位置。 (我尝试做一个[self.view addSubview:activity]并看到它出现。你可能不得不在其他地方替换它。)
- 您可能还想尝试在IB中默认启用它,直到您完成所有事情。
祝好运。希望这可以帮助。
节省您自己创建自定义活动指示器的麻烦,并使用已经可用的标准活动指示器 - 在顶部栏中。此外,IMO用户倾向于期望在事情发生时旋转。
UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
显然,当您的活动结束时将其设置为NO。
首先,确保在.m文件的顶部有@synthesize活动。然后在viewDidLoad方法中,键入activity.hidesWhenStopped = TRUE;
。接下来,在搜索开始时调用的方法中,在搜索停止时在方法中键入[activity startAnimating];
和[activity stopAnimating];
。
试试这个:
设置hidesWhenStopped = NO
,以便始终显示,然后隐藏并手动显示。但是应该在IB中设置View以隐藏第一个。
- (void)startActivityView {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
activity_view.hidden = NO;
[pool drain];
}
- (void)stopActivityView {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
activity_view.hidden = YES;
[pool drain];
}
- (void)doSomething {
[self performSelectorInBackground:@selector(startActivityView) withObject:nil];
// do some time consuming work
[self performSelectorInBackground:@selector(stopActivityView) withObject:nil];
}
也许您的活动指标前面有一个视图?如果你总是把它带到前面怎么办....
loadView = [[UIActivityIndicatorView alloc]
initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
loadView.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
loadView.center = window.center;
loadView.opaque = NO;
[window addSubview: loadView];
[window bringSubviewToFront:loadView];
[loadView startAnimating];
我建议您使用DSActivityView
来显示您的活动指标。源代码可以在Dejal blog找到。
显示和隐藏活动视图是一行简单的代码。
[DSActivityView activityViewForView:self.view];
开始动画活动指示器,延迟0.1或0.2只需调用你想要的另一种方法....我试过,它对我有用....
我有解决方案,如下所示。
我刚刚在搜索按钮点击事件中写下了这一行。
[NSThread detachNewThreadSelector:@selector(threadStartAnimating:) toTarget:self withObject:nil];
并定义函数threadStartAnimating:
如下:
-(void)threadStartAnimating:(id)data
{
[activityIndicator setHidden:NO];
[activityIndicator startAnimating];
}
以上是关于集成到搜索栏中的活动指示器不会显示在iPhone SDK中的主要内容,如果未能解决你的问题,请参考以下文章
如何从 iPhone 中的 twitter 集成中取消并返回应用程序?
UISearchDisplayController 活动指示器