加载的 UIWebView 底部的 UIButtons
我在 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 字符串。 有什么想法吗?
谢谢。
I have a UIWebView on the bottom of a UITableView:
[self.tableView setTableFooterView:webview];
I need to add some buttons at the end of the UIWebView. The height of the UIWebView isn’t constant. If I do something like
[webview addSubview:button];
The button will overlap the webview, since the coordinates of the button's frame are based on the beginning of the UIWebView.
I thought about defining the button’s frame after finishing load the UIWebView:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGRect frame = CGRectMake(10, webView.bounds.size.height, 280, 21);
But the problem is that I also have some data in the UITableView and it’s height isn’t constant. Of course I could keep the height of the UITableView in a variable while I’m building it, but I think that’s a very ugly solution.
I also thought about having 2 footers in the UITableView, but it doesn’t look like it is possible...
Just in case it is relevant, the UIWebView loads a HTML string before the buttons are added.
Any ideas?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你说你想过有两个页脚视图。显然
UITableView
不支持这一点。但是您可以做的是创建一个自定义UIView
来包含UIWebView
和按钮,例如:然后将其设置为 tableview 的页脚视图。
You say you thought of having two footer views. Obviously
UITableView
doesn't support that. But what you can do is create a customUIView
to contain theUIWebView
and the buttons, e.g.:And then set that as the tableview's footer view.
您可以在 HTML 内容的末尾添加按钮,为它们分配一个 href,然后使用此处描述的技术 来拦截点击(查看 JavaScript 回调部分,其中解释了如何“从 UIWebView 中的 JavaScript 调用 Objective-C 代码”。
这个想法是定义一个正确的
-webView:shouldStartLoadWithRequest:< UIWebView 委托中的 /code> 选择器将由 UIWebView 中执行的任何操作触发,该操作将产生新页面的加载,
在该选择器中,您将取消加载(通过)。返回 NO)并且可以执行您喜欢的任何 ObjC 处理,例如您在评论中描述的示例
:您的按钮可以
单击该按钮,将在您执行的操作处调用
webView shouldStartLoadWithRequest:
。 :(不要忘记在选择器的最后返回 YES,以防没有单击任何按钮)
顺便说一句,如果您打算在 iOS 应用程序中大量使用 UIWebView,那么这个 PDF 确实是非常有趣的阅读内容。
You could add the buttons at the end of the HTML content, assign them an href, and then use the technique described here to intercept the click (look at the JavaScript callback section, where it explains how to "Call your Objective-C code from JavaScript in the UIWebView".
The idea is defining a proper
-webView:shouldStartLoadWithRequest:
selector in yourUIWebView
's delegate. This would be triggered by any operation done in the UIWebView which would produce the loading of a new page.In that selector, you would dismiss the loading (by returning NO) and could do whatever ObjC processing you like, like the one you describe in your comment.
Example: your button could be
clicking on that button, the
webView shouldStartLoadWithRequest:
would be called where you would do:(don't forget to return YES at the very end of the selector in case no button was clicked)
By the way, this PDF is really very interesting reading if you plan to heavily use UIWebView in your iOS apps.