iPhone SDK - WebView 活动指示器
Posted
技术标签:
【中文标题】iPhone SDK - WebView 活动指示器【英文标题】:iPhone SDK - WebView activity indicator 【发布时间】:2010-01-25 14:50:21 【问题描述】:我对 iPhone SDK 中的 UIWebView 有一个大问题。 我有一个 TabBarApplication,每个选项卡上有一个 WebView(第一个除外)。
因为加载视图需要一段时间,所以我想显示一个活动指示器。
这是我用来执行此操作的代码:
-(void)webViewDidStartLoad:(UIWebView *) portal
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
-(void)webViewDidFinishLoad:(UIWebView *) portal
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
这样不行...我在第一个选项卡中的 WebView 被称为“门户”,这就是我在上面输入它的原因,但是如果我使用 WebView 也会存在同样的问题。
有什么想法吗?不能说这太难了。 我现在正在寻找一个线索,但没有发现任何东西可以帮助我建立这样一个(认为这很容易)活动指标。
非常感谢您的努力!
来自德国的问候 托比亚斯
【问题讨论】:
【参考方案1】:我通常使用 UIActivityIndicatorView。
如果您在 web 视图顶部有一个导航控制器,它可以完美地工作:
-(void)webViewDidStartLoad:(UIWebView *) portal
UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
UIBarButtonItem *actItem = [[UIBarButtonItem alloc] initWithCustomView:actInd];
self.navigationItem.rightBarButtonItem = actItem;
[actInd startAnimating];
[actInd release];
[actItem release];
摆脱指标:
-(void)webViewDidFinishLoad:(UIWebView *) portal
self.navigationItem.rightBarButtonItem = nil;
如果您不使用导航控制器,那么我将简单地使用较大的样式 UIActivityIndicatorViewStyleWhiteLarge 或将视图放在屏幕上的深色半透明视图顶部,然后在加载完成时将其移除。
【讨论】:
感谢您的快速帮助! activityIndicator 没有在我的应用程序中购物 :( 你有什么想法吗?我只是按照你发布的方式复制并粘贴它。我的 TabBar 有问题吗? 好吧,如果你有一个 UINavigationController,你的控制器和 webview 就在里面(这意味着你会在顶部有一个导航栏)。如果不这样做,则需要将活动指示器添加到另一个视图,例如 [portal addSubview:actInd]。你的控制器方案是什么? UITabBarController > ??? > UIWebView 啊,我明白了。我创建了一个基于 TabBar 的应用程序,并且只是在每个元素中删除了 webviews。每个选项卡都有自己的 webview 控制器。希望你明白我的意思?我对 Objective C 和 iPhone SDK 完全陌生...非常感谢您的帮助! PS。我的代码现在看起来像这样: [code] - (void)webViewDidStartLoad:(UIWebView *) portal UIActivityIndicatorView *actInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; [门户添加子视图:actInd]; [actInd startAnimating]; [actInd 发布]; [/code] 所以视图出现了?所以你知道如果你想在 didFinishLoad 方法中删除它,你必须维护一个指向 ActivityIndicator 的指针。 WebView 正在显示,但 ActivityIndicator 子视图没有。似乎应用程序没有启动 DidStartLoad 方法,因为它也没有与我的 NetworkActivityIndicator 一起使用。以上是关于iPhone SDK - WebView 活动指示器的主要内容,如果未能解决你的问题,请参考以下文章
在 swift 4 中使用 webkit 在 webView 中导航时创建活动指示器