UIScrollView不会在子视图中滚动

时间:2012-11-12 19:31:47

标签: ios uiview uiscrollview

我有一个UIViewController和一个UIScrollView。因为我必须向视图控制器添加多个视图,并且滚动视图只是其中之一,所以我尝试将控制器的视图设置为虚拟UIView并将滚动设置为子视图,如下所示:

    [self setView:[[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]];
    [[self view] setUserInteractionEnabled:NO];

    // TDHexMapScrollView inherits from UIViewController
    [self setHexMapScrollView:[[TDHexMapScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]];
    [[self view] addSubview:[self hexMapScrollView]];

这样滚动不起作用。将其添加为主视图可使滚动和平移正常工作:

    [self setHexMapScrollView:[[TDHexMapScrollView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]];
    [self setView:[self hexMapScrollView]];

有任何帮助吗?感谢

2 个答案:

答案 0 :(得分:0)

不要这样做:

[[self view] setUserInteractionEnabled:NO];

禁用视图和所有子视图的交互。这意味着它会忽略触摸事件并且不会将它们传播到其子视图,这意味着您的滚动视图不会发生任何事件。

答案 1 :(得分:0)

我的评论没有得到回复,但我想我会告诉你一个如何做这个的例子。

声明

CGSize scrollSize;

在您的实施中。然后创建您的scrollView,视图,标签等。

self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, screenFrame.size.width, screenFrame.size.height - self.tabBarController.tabBar.frame.size.height - self.navigationController.navigationBar.frame.size.height)];
self.scrollView.scrollEnabled = YES;
scrollSize.height = self.View1.frame.size.height + self.Label1.frame.size.height + self.Label2.frame.size.height + self.Label3.frame.size.height + self.Label4.frame.size.height + self.Label5.frame.size.height + self.Label6.frame.size.height;
scrollSize.width = screenFrame.size.width;
[self.scrollView setContentSize:scrollSize];

添加到scrollView

[self.scrollView addSubview:self.View1];
//Repeat for all views / labels / etc

将scrollView添加到ViewController

[self.view addSubview:self.scrollView];