2012-07-28 82 views
1
- (IBAction)saveButton:(id)sender 
{ 
    NSURL *yourURL = [NSURL URLWithString: webpageURLLabel.text ]; 
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:yourURL]; 
    if ([self checkURL] == YES) { 
     [webpagePreview loadRequest:request]; 
     webpagePreview.scalesPageToFit = YES; 
    } 
} 

- (BOOL)checkURL 
{ 
    NSString *arrayOfStrings = [NSArray arrayWithObjects:@"http://", @"https://", nil]; 
    NSString *stringToSearchWithin = webpageURLLabel.text; 

    BOOL found=NO; 
    for (NSString *s in arrayOfStrings) 
    { 
     if ([stringToSearchWithin rangeOfString:s].location != NSNotFound) 
     { 
      found = YES; 
      break; 
     } else 
     { 
      webpageURLLabel.text = [NSString stringWithFormat:@"http://%@", webpageURLLabel.text]; 
      found = YES; 
      break; 
     } 
    } 
    return found; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    webpageTitleLabel.text = [webpagePreview stringByEvaluatingJavaScriptFromString:@"document.title"]; 
} 

我調試了它,它看起來像是假設加載。但出於某種原因,當您第一次點擊按鈕時,什麼也沒有發生。iOS網頁無法加載,除非按鈕被點擊兩次

如果用戶第二次點擊按鈕,它可以正常工作。有什麼建議麼?

回答

1

在第一次點擊該按鈕時,在我看來,webpageURLLabel.text可能沒有有效的URL,因此請求無效。然後,當調用​​時,webpageURLLabel.text被設置爲有效的URL,因此下一次單擊會起作用。

也許你應該打電話-checkURL然後再創建NSURLRequest

+0

謝謝。我錯過了。 – 2012-07-28 21:40:30

1

checkURL也有問題。請注意,它總是返回YES。在for循環是減少到邏輯:

if (some condition) { 
    found = YES; 
    break; 
} else { 
    // Fix webpageURLLabel.text 
    found = YES; 
    break; 
} 

然而,考慮如果您有與@"https://"開始有效條目會發生什麼。第一次通過循環if條件失敗,所以@"http://"被添加到URL的前面,並返回。所以@"https://valid.com"變成@"http://https://valid.com"。您需要將else中的所有內容都移至for循環之外,並且只有在找到不正確的情況下才會執行此操作。

+0

我修好了。感謝您的建議 – 2012-07-28 21:51:43