iphone-uiactivityindicatorview不隐藏

iphone-uiactivityindicatorview不隐藏,iphone,uiactivityindicatorview,Iphone,Uiactivityindicatorview,我知道这是一个非常常见的问题,我阅读了stackoverflow中提出的大多数问题,但仍然不知道如何从视图中删除uiactivityindicatorview。 请找到下面的代码 @implementation FeedBackViewController @synthesize m_activity,webView; -(void)viewDidLoad{ [super viewDidLoad]; [webView loadRequest:[NSURLRequest r

我知道这是一个非常常见的问题,我阅读了stackoverflow中提出的大多数问题,但仍然不知道如何从视图中删除uiactivityindicatorview。 请找到下面的代码

@implementation FeedBackViewController
@synthesize m_activity,webView;

-(void)viewDidLoad{

    [super viewDidLoad];


    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://equinox.library.pitt.edu/limesurvey/index.php?sid=87435&lang=en"]]];


}

- (void)dealloc {
    [m_activity release];
    [webView release];
    [super dealloc];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    [m_activity stopAnimating];
    [m_activity removeFromSuperview];
    m_activity = nil;
}

- (void)webViewDidStartLoad:(UIWebView *)webView { 
NSLog(@"in webViewDidFinishLoad")    
    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    m_activity.center = self.view.center;
    [self.view addSubview: m_activity];
    [m_activity startAnimating];
}
头文件

@interface FeedBackViewController : UIViewController<UIWebViewDelegate>{
    IBOutlet UIWebView *webView;        
    IBOutlet UIActivityIndicatorView *m_activity; 
}
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) UIActivityIndicatorView *m_activity;
在viewDidLoad方法中,它在控制台中给出如下消息

> m_activity = <UIActivityIndicatorView:
> 0x4d3d920; frame = (150 79; 20 20);
> hidden = YES; opaque = NO; autoresize
> = RM+BM; layer = <CALayer: 0x4d35ce0>>
>m_活动=0x4d3d920;帧=(15079;2020);
>隐藏=是;不透明=否;自动调整大小
>=RM+BM;图层=>

您的
webViewDidFinishLoad
函数可能未被调用。如果web视图无法打开url,则可能会发生这种情况。在任何情况下,您都应该实现
webView:didFailLoadWithError:
方法,并在那里停止活动指示器

-编辑-

要从UIWebView接收事件,需要将控制器设置为UIWebView的委托。仅仅实现UIWebViewDelegate是不够的。您可以通过如下更新
viewDidLoad
方法来完成此操作:

-(void)viewDidLoad{
 [super viewDidLoad];

 webView.delegate = self;
 [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://equinox.library.pitt.edu/limesurvey/index.php?sid=87435&lang=en"]]];
}

可能未调用您的
webViewDidFinishLoad
函数。如果web视图无法打开url,则可能会发生这种情况。在任何情况下,您都应该实现
webView:didFailLoadWithError:
方法,并在那里停止活动指示器

-编辑-

要从UIWebView接收事件,需要将控制器设置为UIWebView的委托。仅仅实现UIWebViewDelegate是不够的。您可以通过如下更新
viewDidLoad
方法来完成此操作:

-(void)viewDidLoad{
 [super viewDidLoad];

 webView.delegate = self;
 [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://equinox.library.pitt.edu/limesurvey/index.php?sid=87435&lang=en"]]];
}
您应该在代码中添加
NSLog(@“in webViewDidFinishLoad”)
行,并观察控制台以查看代码是否达到这些点。因为这是一个非常简单的例子,也许m_活动没有连接到实际对象?将其添加到viewDidLoad的末尾时,请尝试查看是获得地址还是空值:

NSLog(@“m_活动=%@”,m_活动)

您应该在代码中添加
NSLog(@“in webViewDidFinishLoad”)
行,并观察控制台以查看代码是否达到这些点。因为这是一个非常简单的例子,也许m_活动没有连接到实际对象?将其添加到viewDidLoad的末尾时,请尝试查看是获得地址还是空值:


NSLog(@“m_活动=%@”,m_活动)

@murat…我添加了webView:didFailLoadWithError方法。指示器仍然挂在周围。您是否已将控制器设置为UIWebView的代表?@murat…请您详细说明您刚才所说的内容。我是iphone开发人员的新手…请查看上面的问题。添加了更多详细信息我已编辑了我的答案并添加了方法您可以设置delegate@murat...i添加了方法webView:didFailLoadWithError方法..指示器仍然悬空您是否将控制器设置为UIWebView的代理?@murat…请详细说明您刚才所说的内容。我是iphone开发人员的新手…请查看上面的问题..添加了更多详细信息我编辑了我的答案并添加了如何设置被授权方注意事项:在将其设置为
nil
之前,您应该在
m_活动上调用
release
。旁注:在将其设置为
nil
之前,您应该在
m_活动上调用
release
。控制台显示m_活动的地址,但它不会点击屏幕webViewDidFinishLoad方法。。。我只是用那种方法写了NSLog(@“在webViewDidFinishLoad中”)。。原因可能是什么?控制台显示m_活动的地址,但未命中webViewDidFinishLoad方法。。。我只是用那种方法写了NSLog(@“在webViewDidFinishLoad中”)。。原因可能是什么?