所以我正在构建一个具有许多自定义功能的自定义网络浏览器,但我遇到了一些非常简单的问题。我有一个 NSTimer:
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(checkLoad) userInfo:nil repeats:YES];
这是它调用的方法:
-(void)checkLoad{
if (webView.loading) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
//add button to address bar
UIButton *stopButton = [UIButton buttonWithType:UIButtonTypeContactAdd];
stopButton.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
[stopButton addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];
addressBar.rightView = stopButton;
addressBar.rightViewMode = UITextFieldViewModeUnlessEditing;
}
else if (!(webView.loading)) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
//add button to address bar
UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeInfoDark];
refreshButton.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
[refreshButton addTarget:self action:@selector(refresh) forControlEvents:UIControlEventTouchUpInside];
addressBar.rightView = refreshButton;
addressBar.rightViewMode = UITextFieldViewModeUnlessEditing;
}
}
按钮显示得很好,并且在页面加载或未加载时它们会发生变化。但与他们的互动却非常激烈。刷新按钮在大多数情况下都有效,但停止按钮几乎从不工作。我已经在 NSTimer 上调整了时间,让它变得更长或更短,但没有效果。
另外,我知道按钮图像是错误的,但这些只是占位符,直到我可以刷新并停止加载图像(如 safari 中的图像)。
有什么想法吗?我完全愿意做一些完全不同的事情来检测页面何时加载(这实际上是首选,因为如果我可以避免的话,我不希望 NSTimer 每 0.2 秒循环一次,但这是我能找到的唯一方法。
最佳答案
使用UIWebView
的委托(delegate)方法有什么问题?请参阅UIWebViewDelegate .
设置每隔一小部分触发一次的计时器,以便您可以检查某些内容是否为“code smell” '.
关于objective-c - 我的自定义网络浏览器中的加载/刷新按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315338/