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].networkActivityIndi​​catorVisible = YES;

-(void)webViewDidFinishLoad:(UIWebView *) portal
 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 

这样不行...我在第一个选项卡中的 WebView 被称为“门户”,这就是我在上面输入它的原因,但是如果我使用 WebView 也会存在同样的问题。

有什么想法吗?不能说这太难了。 我现在正在寻找一个线索,但没有发现任何东西可以帮助我建立这样一个(认为这很容易)活动指标。

非常感谢您的努力!

来自德国的问候 托比亚斯

【问题讨论】:

【参考方案1】:

我通常使用 UIActivityIndi​​catorView。

如果您在 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;

如果您不使用导航控制器,那么我将简单地使用较大的样式 UIActivityIndi​​catorViewStyleWhiteLarge 或将视图放在屏幕上的深色半透明视图顶部,然后在加载完成时将其移除。

【讨论】:

感谢您的快速帮助! activityIndi​​cator 没有在我的应用程序中购物 :( 你有什么想法吗?我只是按照你发布的方式复制并粘贴它。我的 TabBar 有问题吗? 好吧,如果你有一个 UINavigationController,你的控制器和 webview 就在里面(这意味着你会在顶部有一个导航栏)。如果不这样做,则需要将活动指示器添加到另一个视图,例如 [portal addSubview:actInd]。你的控制器方案是什么? UITabBarController > ??? > UIWebView 啊,我明白了。我创建了一个基于 TabBar 的应用程序,并且只是在每个元素中删除了 webviews。每个选项卡都有自己的 webview 控制器。希望你明白我的意思?我对 Objective C 和 iPhone SDK 完全陌生...非常感谢您的帮助! PS。我的代码现在看起来像这样: [code] - (void)webViewDidStartLoad:(UIWebView *) portal UIActivityIndi​​catorView *actInd = [[UIActivityIndi​​catorView alloc] initWithActivityIndi​​catorStyle:UIActivityIndi​​catorViewStyleWhiteLarge]; [门户添加子视图:actInd]; [actInd startAnimating]; [actInd 发布]; [/code] 所以视图出现了?所以你知道如果你想在 didFinishLoad 方法中删除它,你必须维护一个指向 ActivityIndi​​cator 的指针。 WebView 正在显示,但 ActivityIndi​​cator 子视图没有。似乎应用程序没有启动 DidStartLoad 方法,因为它也没有与我的 NetworkActivityIndi​​cator 一起使用。

以上是关于iPhone SDK - WebView 活动指示器的主要内容,如果未能解决你的问题,请参考以下文章

android webview 客户端活动指示器

在 swift 4 中使用 webkit 在 webView 中导航时创建活动指示器

使用Blackberry JAVA SDK 6.0活动指示器UI元素加载屏幕轮

带有自定义图像的活动指示器

活动指示器 也就是菊花oo。

在沙盒外的 iphone SDK 中观看用户活动?