1

我的问题是我的 scrollView 的属性(是正确的词吗?)不起作用。我正在尝试让 scrollView 进入页面,但似乎它忽略了我的代码行

[scrollView setPagingEnabled:YES];

scrollView 上下滚动以及左右滚动(设置了 contentSize),但它不会捕捉到页面,并且测试其他不起作用的委托属性似乎是由此导致的问题。

好像我在声明委托时做错了什么,委托应该是自我。这是我的 .h 的标题,它使 DayViewController 成为 UIScrollView 委托

@interface DayViewController : UIViewController <UIScrollViewDelegate> {
UIScrollView *scrollView;
//other code......
}

这是我的 .m 文件的相关部分,其中委托设置为 self,我尝试调整 UIScrollView 的属性。

- (void)viewDidLoad
{
[super viewDidLoad];
tester = [Global tester];
cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
viewsInMemory = [[NSMutableArray alloc] init];

for (int i = 0; i < 3; i++) {
    [viewsInMemory insertObject:[NSNull null] atIndex:i];
}

scrollView = [[UIScrollView alloc] init];
scrollView.delegate = self;
[scrollView setScrollEnabled:YES];
[scrollView setPagingEnabled:YES];
scrollView = [[UIScrollView alloc] initWithFrame:(CGRectMake(0, 0, 320, self.view.frame.size.height))];
scrollView.backgroundColor = [UIColor lightGrayColor];

[self loadInitialDays];


[scrollView addSubview:(currentDayView)];
[self.view addSubview:(scrollView)];

}

我知道我的代码的其他部分可能看起来效率低下或其他什么,但这不是我寻求帮助的目的。我唯一需要的是让你们中的一个人弄清楚为什么代表不工作。非常感谢!

4

1 回答 1

2

问题在于这一行:

scrollView = [[UIScrollView alloc] initWithFrame:(CGRectMake(0, 0, 320, self.view.frame.size.height))];.

您正在重新初始化scrollView,因此上述所有属性都将被忽略,实际设置的唯一属性是该backgroundColor属性。

要解决此问题,请更改此行:

scrollView = [[UIScrollView alloc] init];

scrollView = [[UIScrollView alloc] initWithFrame:(CGRectMake(0, 0, 320, self.view.frame.size.height))];.

所以你的最终代码如下所示:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];
scrollView.delegate = self;
[scrollView setScrollEnabled:YES];
[scrollView setPagingEnabled:YES];
scrollView.backgroundColor = [UIColor lightGrayColor];
于 2014-07-26T00:21:39.143 回答