当前位置:  开发笔记 > 编程语言 > 正文

如何在UIWebView下添加控件

如何解决《如何在UIWebView下添加控件》经验,为你挑选了1个好方法。

在UIWebView下添加几个控件(例如一些UIButton)的最简单,最快速或其他(客观)最佳方法是什么?

为了清楚起见,我想显示一个常规的滚动UIWebView,但当滚动到达底部时,我希望在Web内容之后有一些UIControls.我宁愿不使用看起来像控件的HTML/CSS内容来伪造它; 理想情况下,它们应该是真正的控件,我可以照常连接到我的视图控制器.

我不知道用一个包含UIWebView和控件的大UIScrollView(UIScrollView和嵌套的UIWebView之间是否存在滚动冲突?)或者包含Web视图和控件的UITableView来尝试这样做是否最简单?在单独的单元格中(表现会很糟糕吗?),还是以其他方式我没有想过.

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



1> Alice Isabel..:

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

如果将UIWebView放在UIScrollView中,则一个或另一个将拦截滚动并滚动其内容窗格,但另一个则不会.我不确定哪一个会,我认为它将是UIScrollView.在任何情况下,当您到达UIWebView中的滚动结束时,UIScrollView都没有提供滚动,反之亦然.

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

我能想到的唯一可行的方法是在UIWebView的内部进行处理,并将包含按钮的UIView添加到UIWebView使用的滚动实体中.这超出了我的范围,但这些标头转储将帮助您入门.请记住,如果Apple注意到您正在做什么,他们可能会拒绝您的应用,此外,内部可能会随时更改,从而破坏您的代码.如果你走这条路线,试着以一种缺失功能会导致优雅失败的方式对其进行编码.

编辑:

通过一些讨论和实验,OP和我得出结论,这是非常可能的,并且有一种方法可以完全不依赖于内部.也就是说,使用封闭滚动视图,并在Web视图加载到其自己的内容视图的完整大小后调整其大小.可以使用[webView sizeThatFits:CGSizeZero]找到此大小.

如果你确实想要使用UIWebView的私有来完成这个,我有一个简短的代码示例,在UIWebView的文档视图中添加一个视图,因为我得到了所有这些都得到了解决:)

- (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];
}

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有