如何访问 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 的子视图。如何跟踪子视图在定义的矩形内?