Iphone iOS网页没有';除非按两次按钮,否则不要加载
我对它进行了调试,看起来它应该加载了。但是由于某种原因,当你第一次点击按钮时,什么也没有发生Iphone iOS网页没有';除非按两次按钮,否则不要加载,iphone,html,ios,uiwebview,nsstring,Iphone,Html,Ios,Uiwebview,Nsstring,我对它进行了调试,看起来它应该加载了。但是由于某种原因,当你第一次点击按钮时,什么也没有发生 如果用户再次点击该按钮,则效果良好。有什么建议吗?在我看来,第一次单击按钮时,webpageURLLabel。文本可能没有有效的URL,因此请求无效。然后,当调用[self-checkURL]时,webpageURLLabel.text被设置为有效的URL,因此下一次单击有效 在创建NSURLRequest之前,您可能应该调用-checkURL?在checkURL中也存在问题。注意,它总是返回YES。f
如果用户再次点击该按钮,则效果良好。有什么建议吗?在我看来,第一次单击按钮时,
webpageURLLabel。文本可能没有有效的URL,因此请求无效。然后,当调用[self-checkURL]
时,webpageURLLabel.text
被设置为有效的URL,因此下一次单击有效
在创建NSURLRequest
之前,您可能应该调用-checkURL
?在checkURL
中也存在问题。注意,它总是返回YES。for循环内部是逻辑,可简化为:
- (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"];
}
但是,考虑一下如果你有一个有效的条目,从<>代码> @“http://\”/代码>会发生什么。第一次通过循环时,if条件失败,因此
@“http://”
被添加到URL的前面,然后返回。所以@”https://valid.com“
变为@”http://https://valid.com“
。您需要将else
中的所有内容移到for循环之外,并且只有在“查找”不正确时才执行此操作。我修复了它。谢谢你的建议
if (some condition) {
found = YES;
break;
} else {
// Fix webpageURLLabel.text
found = YES;
break;
}