gpt4 book ai didi

iphone - 如何在 UIWebView 下添加控件

转载 作者:行者123 更新时间:2023-12-03 18:35:45 25 4
gpt4 key购买 nike

在 UIWebView 下添加几个控件(例如一些 UIButtons)最简单、最快或(客观上)最好的方法是什么?

需要明确的是,我想显示一个常规的滚动 UIWebView,但是当滚动到达底部时,我希望在网页内容之后有一些 UIControl。我不想用看起来像控件的 HTML/CSS 内容来伪造它;理想情况下,它们应该是真正的控件,我可以像往常一样连接到我的 View Controller 。

我不知道尝试使用包含 UIWebView 和控件的一个大 UIScrollView 是否最简单(UIScrollView 和嵌套的 UIWebView 之间会存在滚动冲突吗?),还是使用包含 web 的 UITableView在单独的单元格中查看和控件(性能会很糟糕吗?),或者以我没有想到的其他方式。

更新:我不认为我希望 UIWebView 本身实际滚动;我认为我需要调整它的大小以容纳其所有内容,完全禁用其滚动行为,然后允许用户滚动其父 View (UIScrollView 或 UITableView)以显示 UIWebView 的不同部分。

最佳答案

您提出的 UIScrollView 和 UITableView 解决方案都不起作用。

如果将 UIWebView 放入 UIScrollView 中,其中一个将拦截滚动并滚动其内容 Pane ,但另一个不会。我不确定是哪一个,我想应该是 UIScrollView。无论如何,当您到达 UIWebView 中的滚动末尾时,没有规定 UIScrollView 可以滚动,反之亦然。

如果您使用 UITableView,UIWebView 将在其单元格内滚动,但 UITableView 根本不会滚动,或者 UIWebView 根本不会滚动,而 UITableView 会。如果您使用“分组”表格样式,您可能可以滚动 UIWebView 和 UITableView,但这不会是您正在寻找的有凝聚力的体验。

我能想到的唯一可行的技术是在 UIWebView 的内部进行修改,并将包含按钮和其他内容的 UIView 添加到 UIWebView 使用的滚动实体中。这超出了我的理解范围,但是these header dumps will get you started.请记住,如果 Apple 注意到您在做什么,他们可能会拒绝您的应用程序,此外,内部结构可能随时发生变化,从而破坏您的代码。如果您走这条路,请尝试以这样的方式进行编码:缺少功能将导致正常失败。

编辑:

经过一些讨论和实验,OP 和我得出的结论是,这是很有可能的,并且有一种完全不依赖内部的方法来做到这一点。也就是说,使用封闭的 ScrollView ,并在 Web View 加载到其内容 View 的完整大小后调整其大小。该尺寸可以使用 [webView sizeThatFits:CGSizeZero] 找到。

如果您确实想使用 UIWebView 的私有(private)来完成此操作,我有一个简短的代码示例,将 View 添加到 UIWebView 的文档 View 中,因为无论如何我都已经解决了:)

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

// Override point for customization after app launch
UIView* testView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];
UIWebView* testWebView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];
[testView addSubview:testWebView];
[testWebView setDelegate:self];
[testWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]];



[window addSubview:testView];
[window makeKeyAndVisible];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
UIView *insert = [[[UIView alloc] initWithFrame:CGRectMake(0, [[webView _documentView] frame].size.height, 320, 40)] autorelease];
[insert setBackgroundColor:[UIColor greenColor]];
[[webView _documentView] addSubview:insert];
}

关于iphone - 如何在 UIWebView 下添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1181609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com