在我的应用程序的一个用户界面中,我希望我的应用程序显示滚动视图(滚动页面的计数在运行时动态设置)。但是我希望将UIWebView和UIView元素添加到同一个数组中,这样当我滚动时我将能够显示UIWebView(比如一个网页)和其他一些视图吗?
修改
我收到了这个答案,看起来好像完全正常但不起作用(或者我不能) 这是代码: NSArray * myArray; //在这里用一堆UIWebView和UIView对象填充数组
for (id theObject in myArray)
{
if ([theObject isKindOfClass:[UIWebView class]]) {
// do stuff
}
else if ([theObject isKindOfClass:[UIView class]]) {
// do other stuff
}
}
任何人都可以请求帮助吗?我需要创建一个可滚动的视图数组(如iPhone的主页),但第一页(平均值,视图)必须是UIWebView
的成员(其他人是UIView
)
以下是我的所有代码(我不打算在这里做任何事情:)
CGRect frame;
[webView initWithFrame:frame];
NSArray *colors = [NSArray arrayWithObjects:webView, [UIColor blackColor],[UIColor blackColor], nil];
for (int i = 0; i < colors.count; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
UIView *subview = [[UIView alloc] initWithFrame:frame];
subview.backgroundColor = [colors objectAtIndex:i];
[subview setTag:i];
if([subview tag]==2){
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(70.0f, 600.0f, 250.0f, 60);
[button setTitle:@"Read Messages" forState:UIControlStateNormal];
for(NSDictionary* buttonData in butDat) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
NSString* buttonTitle = [buttonData objectForKey:@"name"];
NSString* buttonID=[buttonData objectForKey:@"order_number"];
[button setTitle:buttonTitle forState:UIControlStateNormal];
[button setTag:[buttonID intValue]];
button.titleLabel.font=[UIFont systemFontOfSize:28];
CGFloat yPosition = 60.0f;
const CGFloat buttonHeight = 85.0f;
if (button.tag==1) {
button.frame = CGRectMake(70.0f, yPosition, 250.0f, buttonHeight);
//[ma.view addSubview:button];
}
if (button.tag==2) {
button.frame = CGRectMake(440.0f, yPosition, 250.0f, buttonHeight);
//[ma.view addSubview:button];
}
if (button.tag==3) {
button.frame = CGRectMake(70.0f, 200.0f, 250.0f, buttonHeight);
//[ma.view addSubview:button];
}
if (button.tag==4) {
button.frame = CGRectMake(440.0f, 200.0f, 250.0f, buttonHeight);
//[menu_2.view addSubview:button];//****
}
if (button.tag==5) {
button.frame = CGRectMake(70.0f, 335.0f, 250.0f, buttonHeight);
//[menu_2.view addSubview:button];//****
}
if (button.tag==6) {
button.frame = CGRectMake(440.0f, 335.0f, 250.0f, buttonHeight);
//[menu_2.view addSubview:button];//****
}
[button addTarget:self action:@selector(secondAct:) forControlEvents:UIControlEventTouchUpInside];
[scrollView addSubview:button];
}
//
[button addTarget:self action:@selector(readM:) forControlEvents:UIControlEventTouchUpInside];
// [scrollView addSubview:button];
[self.view addSubview:button];
// [self.scrollView addSubview:button];
}
[self.scrollView addSubview:subview];
答案 0 :(得分:4)
没有什么能阻止您将UIWebView
和UIView
类型的对象添加到同一NSArray
。
如果您的代码需要知道您是在处理UIWebView
还是UIView
,则可以使用isKindOfClass:
方法检查:
NSArray *myArray;
// Fill the array with a bunch of UIWebView and UIView objects here
for (id theObject in myArray)
{
if ([theObject isKindOfClass:[UIWebView class]]) {
// do stuff
}
else if ([theObject isKindOfClass:[UIView class]]) {
// do other stuff
}
}
此外,UIWebView
是UIView
的子类,并且继承了许多相同的方法,使得两种情况下的视图布局都相同。
从用户界面的角度来看,在滚动视图中包含滚动视图可能是不好的做法,因此您需要禁用滚动UIWebView
个对象。如果您的目标是iOS 5及更高版本,则可以使用以下内容:
webView.scrollView.scrollEnabled = NO;
webView.scrollView.bounces = NO;
如果你的iOS版本低于5.0,你可以注入以下javascript:
<script type="text/javascript">
touchMove = function(event) {
event.preventDefault();
}
</script>
要实施javascript注入,您可以在UIWebView
stringByEvaluatingJavaScriptFromString:
的{{1}}方法
有关webViewDidFinishLoad:
javascript注入的更多信息,请参阅此处:http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview
编辑:查看您的代码,似乎您认为您的数组中包含UIWebView
和两个UIWebView
对象。因此,您需要检查是否正在处理UIColor
或UIWebView
,否则您将UIColor
崩溃。同时您将subview.backgroundColor = [colors objectAtIndex:i];
对象的框架设置为{{} 1}}未初始化。
您应该使用UIWebView
填充CGRect frame;
,然后使用背景颜色设置两个NSArray
个对象:
UIWebView
答案 1 :(得分:3)
是。 UIWebViews来自UIViews。您可以在任何将UIView作为子视图插入的地方使用它们,包括在UIScrollView父视图中,或者作为要插入数组的对象。
答案 2 :(得分:2)
您的滚动视图未滚动,因为您未设置contentsize属性。首先,您必须适当地找到内容大小,然后必须将内容大小设置为
[scrollView setContentSize:CGSize];
代码末尾。即;之后
[self.scrollView addSubview:subview];
盲目尝试,请使用
[scrollView setContentSize:CGSizeMake(1000,1000)];
这肯定会滚动视图!!!