- (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"];
}
我调试了它,看起来好像要加载。但由于某些原因,当你第一次点击按钮时,没有任何反应。
如果用户再次点击该按钮,则可以正常工作。有什么建议吗?
答案 0 :(得分:1)
在我看来,第一次点击按钮时,webpageURLLabel.text
可能没有有效的网址,因此请求无效。然后,当调用[self checkURL]
时,webpageURLLabel.text
会设置为有效的网址,因此下次点击会有效。
也许您应该在创建-checkURL
之前致电NSURLRequest
?
答案 1 :(得分: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"
。您需要在for循环外的else
中移动所有内容,并且只有在找不到的情况下才执行此操作。