2013-05-06 76 views
0

我正在构建一个iPhone应用程序,其中有两个视图一个用于登录视图,另一个用于Web视图。当用户输入登录凭证时,它将重定向到Web视图。而从登录视图加载web视图太多的时间正在加载。因此我使用了alertview来显示加载图像。停止动画加载图片后Webview内容不可读

@interface FocusViewController() 
@end 

@implementation FocusViewController 

@synthesize txtsecurecode; 
@synthesize webView; 
@synthesize OrganizationCode; 

UIActivityIndicatorView *indicator; 
UIAlertView *alert; 

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
appDelegate = (FocusAppDelegate *)[[UIApplication sharedApplication]delegate]; 

if(appDelegate.data.strOrganizationCode == nil || appDelegate.data.strAccessCode == nil) 
{ 
    NSLog(@"YOUR FIRST SCREEN"); 
    _loginView.hidden = NO; 
    webView.hidden = YES; 
} 
else 
{ 
    NSLog(@"LOAD WEBVIEW DIRECTLY\n"); 
    NSLog(@"Organization Code -> %@ \n Secure Access Code -> %@",appDelegate.data.strOrganizationCode,appDelegate.data.strAccessCode); 

    OrganizationCode.text = appDelegate.data.strOrganizationCode ; 
    txtsecurecode.text = appDelegate.data.strAccessCode; 
    [self loginClicked:nil]; 

    webView.hidden = NO; 
    _loginView.hidden = YES; 

    } 
    } 

- (IBAction)loginClicked:(id)sender { 

@try { 

    if([[txtsecurecode text] isEqualToString:@""] || [[OrganizationCode text] isEqualToString:@""]) { 
     [self alertStatus:@"Please enter Access code" :@"Login Failed!":0]; 
    } 
    else 
    { 
     NSString *post =[[NSString alloc] initWithFormat:@"txtsecurecode=%@ @&password=%@",[txtsecurecode text],[OrganizationCode text]]; 

     NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 

     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myexample.com/AccountService/security/ValidateAccess?accesscode=%@&companycode=%@&type=1", txtsecurecode.text, OrganizationCode.text]]; 

     NSString *responseData = [[NSString alloc]initWithData:[NSData dataWithContentsOfURL:url] encoding:NSUTF8StringEncoding]; 

     if([responseData isEqualToString:@""]){ 
      [self alertStatus:@"Please enter valid Access Code" :@"Login Failed !" :0]; 
     } 
     else 
     { 
      appDelegate.data.strOrganizationCode = OrganizationCode.text; 
      appDelegate.data.strAccessCode = txtsecurecode.text; 

      [FocusAppDelegate addCustomObjectToUserDefaults:appDelegate.data key:kCredentails]; 

      //Updated 
      _loginView.hidden = YES; 
      webView.hidden = NO; 

      responseData = [responseData stringByReplacingOccurrencesOfString:@" "" " withString:@""]; 
      NSString* encodedString = [responseData stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

      NSLog(@"Response ==> %@" ,encodedString); 

      alert = [[[UIAlertView alloc] initWithTitle:@"Loading\nPlease Wait..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil] autorelease]; 
      [alert show]; 

      UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
      indicator.center = CGPointMake(alert.bounds.size.width/2, alert.bounds.size.height - 50); 
          [indicator startAnimating]; 
          [alert addSubview:indicator]; 
          [indicator release]; 

      webView.backgroundColor = [UIColor clearColor]; 
      webView.opaque = NO; 
      webView.delegate = self; 
      webView.frame = self.view.bounds; 

      NSString* urlTwo = [[encodedString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 
           stringByReplacingOccurrencesOfString:@"%22" withString:@""]; 

      NSURL *url2; 

      if([urlTwo hasPrefix:@"http://"]){ 
       url2 = [NSURL URLWithString:urlTwo]; 
      }else{ 
       url2 = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@" , urlTwo]]; 
      } 

      NSLog(@"url2:%@", url2); 

      NSURLRequest *requestObj = [NSURLRequest requestWithURL:url2]; 

      [webView loadRequest:requestObj]; 

      [[self view] addSubview:webView]; 

     } 
    } 

} 

@catch (NSException * e) { 
    NSLog(@"Exception: %@", e); 
    [self alertStatus:@"Login Failed." :@"Login Failed!" :0]; 
} 
} 

-(void)webViewDidStartLoad:(UIWebView *)webView{ 
NSLog(@"webViewDidStartLoad"); 
[self.view addSubview:self.indicator]; 
alert.hidden = NO; 

} 

- (void) webViewDidFinishLoad:(UIWebView *)webView { 
NSLog(@"webViewDidFinishLoad"); 
[self.indicator removeFromSuperview]; 
[self.alert dismissWithClickedButtonIndex:1 animated:NO] ; 

} 

- (IBAction)backgroundClick:(id)sender 
{ 
[txtsecurecode resignFirstResponder]; 
[OrganizationCode resignFirstResponder]; 
} 
@end 

直到webview显示内容,加载图像显示和工作良好。但webview的内容不可编辑,并保持静态,因为我认为我使用'web view.hidden = YES'。当我评论警报方法并运行时,webview的内容也是可编辑的并且按需要运行良好。加载图片停止加载后,我需要加载url的内容。任何人都可以帮助我解决这个问题...在此先感谢。

+0

重要的你或许应该把代码中的问题,而不是一个引擎收录。 – nil 2013-05-06 06:45:40

回答

0

我建议表明从视图控制器具有的WebView活动指示灯和实施的WebView委托方法

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    [actvityIndicator startAnimating]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [actvityIndicator stopAnimating]; 
} 

这将让您的WebView互动,也表明了指标,直到页面完全加载

0

你可以尝试这样的事情。该代表是在.h文件中

FocusViewController.h

@interface FocusViewController : UIViewController <UIWebViewDelegate> { 
    UIActivityIndicatorView *indicator; 
} 

FocusViewController.m

- (void)viewDidLoad 
{ 
    // Loading Indicator 
    indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 

    [indicator setColor:[UIColor colorWithRed:50.0/255.0 green:120.0/255.0 blue:200.0/255.0 alpha:1.0]]; 

} 

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    [indicator startAnimating]; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [indicator stopAnimating]; 
}