【发布时间】:2010-09-03 20:34:23
【问题描述】:
我目前创建了一个 webview,但我不想使用界面生成器来创建后退、前进和刷新按钮。我将如何以编程方式创建这些按钮?我知道如何使用代码创建常规按钮,但是对于 webView 委托按钮,我迷失了方向,无法在上面找到很多资源。
【问题讨论】:
我目前创建了一个 webview,但我不想使用界面生成器来创建后退、前进和刷新按钮。我将如何以编程方式创建这些按钮?我知道如何使用代码创建常规按钮,但是对于 webView 委托按钮,我迷失了方向,无法在上面找到很多资源。
【问题讨论】:
来自UIWebView 文档:
如果您允许用户在网页历史记录中前后移动,那么您可以使用goBack 和goForward 方法作为按钮的操作。当用户无法向某个方向移动时,使用canGoBack 和canGoForward 属性禁用按钮。
然后设置按钮将使用addTarget:action:forControlEvents:(正如Sven 所指出的那样):
[myBackButton addTarget:myWebView
action:@selector(goBack)
forControlEvents:UIControlEventTouchDown];
如果您想根据canGoBack 和canGoForward 属性获得花哨并启用/禁用按钮,则必须在UIController 中添加一些KVO 通知。
【讨论】:
您需要使用addTarget:action:forControlEvents: 为您的网络视图设置按钮的目标和操作。
【讨论】:
要启用/禁用后退或前进按钮而不是使用KVO,我们可以使用以下“hack”
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
if ([webView canGoBack])
[backbutton setEnabled:YES];
else
[backbutton setEnabled:NO];
if ([webView canGoForward])
[fwdbutton setEnabled:YES];
else
[fwdbutton setEnabled:NO];
}
【讨论】:
启用或禁用按钮的更简单方法是:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[backButton setEnabled:webView.canGoBack];
[fwdButton setEnabled:webView.canGoForward];
}
【讨论】: