我在UITableView底部有一个UIWebView:
[self.tableView setTableFooterView:webview];
我需要在UIWebView的末尾添加一些按钮。 UIWebView的高度不是常量。如果我做了像
这样的事情[webview addSubview:button];
按钮将与webview重叠,因为按钮框架的坐标基于UIWebView的开头。 我想在完成加载UIWebView后定义按钮的框架:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGRect frame = CGRectMake(10, webView.bounds.size.height, 280, 21);
但问题是我在UITableView中也有一些数据,它的高度不是常数。当然,我可以在构建它时将UITableView的高度保持在一个变量中,但我认为这是一个非常难看的解决方案。 我还想过在UITableView中有2个页脚,但它看起来不太可能...... 为了防止它相关,UIWebView在添加按钮之前加载HTML字符串。 有什么想法吗?
感谢。
答案 0 :(得分:0)
您可以在HTML内容的末尾添加按钮,为它们分配一个href,然后使用here描述的技术来拦截点击(查看JavaScript回调部分,它解释了如何“在UIWebView“。
中从JavaScript调用Objective-C代码我们的想法是在-webView:shouldStartLoadWithRequest:
的委托中定义一个合适的UIWebView
选择器。这将由UIWebView中完成的任何操作触发,这将导致加载新页面。
在那个选择器中,你会忽略加载(通过返回NO)并且可以执行你喜欢的任何ObjC处理,就像你在评论中描述的那样。
示例:您的按钮可能是
<button type="button" onClick="javascript:'button_1/YOU_URL">
Click Me!
</button>
点击该按钮,将会调用webView shouldStartLoadWithRequest:
:
NSURL *url = [request URL];
NSString *urlString = [url absoluteString];
if ([urlString hasPrefix:@"button_1"]) {
<DO YOUR PROCESSING HERE>
return NO;
}
(如果没有点击按钮,请不要忘记在选择器的最末端返回YES)
顺便说一下,如果您打算在iOS应用程序中大量使用UIWebView,那么这篇PDF非常有趣。
答案 1 :(得分:0)
你说你想过有两个页脚视图。显然UITableView
不支持这一点。但您可以创建自定义UIView
以包含UIWebView
和按钮,例如:
+--------------------------+
| |
| |
| |
| web view |
| |
| |
+--------------------------+
| |
| [button] [button] |
| |
+--------------------------+
然后将其设置为tableview的页脚视图。