2012-06-20 20 views
5

Tôi có hai UIScrollView, một trang ngang, một dọc, cả hai trang một (như trong, chiều ngang là hai trang và chiều dọc là hai trang cao). Cuộn ngang nằm ở dọc. Tôi đang cố gắng bắt chước thiết kế của Calcbot, nơi bạn có thể di chuyển sang trái/phải cho các nút và lên/xuống cho lịch sử.UIScrollView nhảy xuống khi lần đầu tiên chạm vào

Tuy nhiên, khi lượt xem tải, chế độ xem cuộn ngang sẽ cao hơn khoảng 100 pixel so với vị trí cần xem. Sau đó, khi tôi chạm vào nó và bắt đầu di chuyển nó một chút, nó nhảy/bỏ qua đến vị trí chính xác và ở lại đó. Làm thế nào để nó xuất hiện chính xác ngay từ đầu?

Đây là mã của tôi cho viewDidLoad:

-(void)viewDidLoad { 
horizontalScrollView.pagingEnabled = YES; 
verticalScrollView.pagingEnabled = YES; 


horizontalScrollView.contentSize = CGSizeMake(horizontalScrollView.bounds.size.width * 2, horizontalScrollView.bounds.size.height); // 2 pages wide. 
verticalScrollView.contentSize = CGSizeMake(verticalScrollView.bounds.size.width, verticalScrollView.bounds.size.height * 2); 


horizontalScrollView.delegate = self; 
verticalScrollView.delegate = self; 




[verticalScrollView addSubview:horizontalScrollView]; 

[verticalScrollView setContentOffset:CGPointMake(0, 640)]; 

[self.view addSubview:verticalScrollView]; 

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460); 

} 

Cảm ơn.

Trả lời

4

nhảy trong UIScrollView thường xảy ra khi bạn đã thiết lập pagingEnabled = YES và contentOffset được thiết lập để một vị trí đó là không phải trên một ràng buộc trang (có thể chia bởi bounds.size.height).

+0

Tôi vừa thay đổi contentOffset thành 380 và nó hoạt động. Cảm ơn. –

+1

Trong một kịch bản hơi khác, điều này cố định vấn đề nhảy của tôi, quá. Tôi đã có một UIScrollView theo chiều dọc với pagingEnabled từ một số thử nghiệm tôi đã làm trước đó. Bất cứ khi nào tôi cuộn xuống và sau đó khai thác bất cứ nơi nào, nó sẽ nhảy trở lại. Toggled nó trở lại, và tất cả là tốt. – patridge

+0

Hey @patridge Bạn có thể giải thích nhận xét của mình được không .. Tôi đang gặp vấn đề tương tự. – Mystery

0

Chỉ cần suy nghĩ nhanh vì tôi hiện đang gây rối với UIScrollView. Bạn có thể thử sử dụng -(void)viewWillAppear:(BOOL)animated. Ví dụ. Tôi thiết lập tối thiểu và tối đa của tôi di chuyển trong phương pháp đó bởi vì nó phụ thuộc vào kích thước của nội dung đó, từ những gì tôi đọc, không được thiết lập cho đến khi viewWillAppear.

+0

Cảm ơn, nhưng tôi đã thử điều này và dường như không thay đổi gì cả. –

0

Move dòng này

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460); 

Trong viewWillAppear thay vì viewDidLoad, xem nếu nó hoạt động

+0

Thật không may, nó vẫn xuất hiện cao hơn mức cần thiết. Cảm ơn bạn đã gợi ý, mặc dù. –