如何访问 UIScrollView 的特定子视图(UIWebView)并将一行 Java 传递给它

Posted

技术标签:

【中文标题】如何访问 UIScrollView 的特定子视图(UIWebView)并将一行 Java 传递给它【英文标题】:How to access a specific subview(UIWebView) of a UIScrollView and pass a line of Java to it 【发布时间】:2011-06-04 16:27:41 【问题描述】:

我正在创建一个 UIScrollView 并添加四个 UIWebViews 作为子视图。

我想做两件事:

    在创建时标记每个WebView,以便稍后在UIScrollView 中解决它。 在特定时刻 (scrollViewWillBeginDragging) 将 javascript 发送到当前由 UIScrollview 提供的 UIWebView

我不知道如何标记子视图,也不知道如何解决它。所以我的两个问题是:

第一季度。如何正确标记子视图(同时将其添加到 UISCrollView)?

第二季度。如何将命令寻址到 UIScrollView 内的子视图? ((最好的情况:当前显示的那个))

感谢您的帮助!

也许问题可以通过查看实际代码来澄清:

这是我用来创建UIWebviews 并将它们添加到UIScrollview (scrollView1) 的代码:

- (void)viewDidLoad

scrollView1.delegate = self;
scrollView1.pagingEnabled = YES;
scrollView1.delaysContentTouches = NO;

NSInteger numberOfViews = 4;

for (int i = 0; i < numberOfViews; i++) 

CGFloat yOrigin = i * self.view.frame.size.width;
UIWebView *WebView1 = [[UIWebView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];

NSString *path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"page_%d", i] ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[WebView1 loadRequest:request];


//HERE I'M TRYING TO TAG THE VIEW

WebView1.tag = i;

[scrollView1 addSubview:awesomeView];
[WebView1 release];


scrollView1.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);

这是我想用来寻址UIScrollview (scrollView1) 中的UIWebviews 的代码:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView1

NSString *JavaScriptCommand = [NSString stringWithFormat:@"player.pause();"];

<strong>//HERE I'M TRYING TO ACCESS THE TAGGED VIEW</strong>

[scrollView1.????? stringByEvaluatingJavaScriptFromString:JavaScriptCommand];

【问题讨论】:

【参考方案1】:

这应该可以工作

int i = // the tag of the webview you want to address   
[[scrollView1 viewWithTag:i] stringByEvaluatingJavaScriptFromString:JavaScriptCommand];

您可以存储当前呈现在视图控制器类成员中的 UIWebView 的标记。

【讨论】:

如果我有 scrollView1 的 tag=0,然后如果我将访问 [scrollView1 viewWithTag:0] 那么它将打印我的 scrollView... 你能告诉我为什么会这样吗? 那是因为你给scrollView标签0。你必须给你想要访问的scrollviews的子视图标签。我也不会使用 tag=0,因为我认为这可能是所有视图的默认值。 (不确定) 我没有给标签 0,默认情况下它.. 那么解决方案是什么,从 1 开始 subView 标签? 是的,最好从 1 开始。

以上是关于如何访问 UIScrollView 的特定子视图(UIWebView)并将一行 Java 传递给它的主要内容,如果未能解决你的问题,请参考以下文章

如何锚定 UIScrollView 的子视图,如移动 Safari 中的 URL 栏?

将一组按钮添加到特定的子视图

如何将 UIPanGestureRecognizer 添加到 UIScrollView 子视图

UIViews 是 UIScrollView 的子视图。如何跟踪子视图在定义的矩形内?

如何将 UITableviewcell 子视图添加为 uiscrollview

在 UIScrollview 中获取 UIView 的子视图