在UIWebView中添加UIButton

我有一个UIWebView已经填充我的请求(loadRequest)。

我想在其中添加一个UIButton。 编写这个简单的代码很容易:

[self.myWebView loadRequest:request]; [self.myWebView addSubview:myButton]; 

但是,它似乎UIButton将不滚动UIWebView的内容。 它保持像UIWebView顶层的固定状态。 所以当用户滚动时,UIButton将与内容不同步。

有任何想法吗 ?

您可以使用stringByEvaluatingJavaScriptFromString方法将诸如<a href='yourTag01'> <button> My Button </ button> </a>之类的html标记注入到UIWebview的内容中。

要捕获点击事件,并阻止它重新加载你的webview的内容使用这个委托:

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if(navigationType==UIWebViewNavigationTypeLinkClicked && [[request.URL absoluteString] isEqualToString: @"yourTag01"]) { //your custom action code goes here return NO; } return YES; } 

你不能以任何理智的直截了当的方式做到这一点。 你可能要重新评估你在做什么。

继续axiixc的评论,这里是一些代码,你可能会用来放置一个button在webview的底部。 通过在布局子视图中放置定位代码,您可以正确处理旋转。

 - (void)webViewDidFinishLoad:(UIWebView *)webview{ if (!_button){ UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; [button setTitle:@"Move All Blue Cards to Known" forState:UIControlStateNormal]; [button setBackgroundImage:[UIImage imageNamed:@"signin-button-blue-color"] forState:UIControlStateNormal]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; button.titleLabel.font = [UIFont boldSystemFontOfSize:16.0]; [_webview.scrollView addSubview:button]; _button = button; } [self setNeedsLayout]; [self layoutIfNeeded]; } - (void)layoutSubviews{ [super layoutSubviews]; float y = 0; CGRect originalRect = _webview.frame; _webview.frame = CGRectMake(0, 0, originalRect.size.width, 1); // Trick the webview into giving the right size for content CGSize contentSize = _webview.scrollView.contentSize; _webview.frame = originalRect; if (contentSize.height < _webview.frame.size.height){ // This keeps the button at the bottom of the webview, or at the bottom of the content, as needed. y = _webview.frame.size.height - 64; // 44 tall + 20 offset from the bottom } else { y = contentSize.height + 20; } _button.frame = CGRectMake(20, y, self.frame.size.width-40, 44); // 40/2 = 20 px on each side contentSize.height = CGRectGetMaxY(_button.frame)+20; _webview.scrollView.contentSize = contentSize; } 

在iOS 5上,您可以直接访问UIWebView的滚动视图,这是您真正想要添加button的位置, https://developer.apple.com/documentation/uikit/uiwebview/1617955-scrollview 。 但我倾向于同意以前的评论者,你应该考虑一个不同的方法,因为混合UIKit与networking视图并不真正意味着如何描述你的工作。