7

Tôi đang sử dụng UIScrollView để phân trang ba khác nhau UIViewControllers. Máy nhắn tin khởi chạy để hiển thị trang 1 từ đầu. Vì vậy, người dùng có thể vuốt sang trái hoặc phải từ đầu. Khi tôi trình bày một bộ điều khiển chế độ xem từ bộ điều khiển xem giữa, UIScrollView tạm thời cuộn đến trang đầu tiên trong khi hoạt ảnh của trình điều khiển chế độ xem được trình bày. Khi tôi loại bỏ bộ điều khiển chế độ xem mọi thứ trở lại bình thường và UIScrollView hiển thị bộ điều khiển chế độ xem trung tâm.Cuộn UIScrollView đến vị trí khác trong khi hiển thị hoạt ảnh của bộ điều khiển chế độ xem phương thức

Tôi mong đợi (và muốn) số UIScrollView để giữ vị trí của nó trong khi hoạt ảnh.

Đây không phải là lỗi kỹ thuật gây ra sự cố hoặc điều gì đó, nó chỉ là xấu xí.

Bất cứ ai từng có điều đó trước đây? Bất kỳ ý tưởng làm thế nào để sửa chữa nó?

+0

như vậy để được rõ ràng, vấn đề là xem di chuyển của bạn được di chuyển trở lại trang đầu tiên của bạn khi trình bày một sự chuyển đổi phương thức từ thứ 2 trang? cũng có, bạn đang sử dụng ngăn chặn điều khiển xem cha-con? –

+0

bạn có thể thử vô hiệu hóa phân trang trên uiscrollview và kiểm tra xem nó vẫn xảy ra? –

+0

Bạn đã thử cài đặt thuộc tính scrollEnabled thành NO và sau đó quay lại YES? – Woodstock

Trả lời

0

Tôi đã gặp vấn đề tương tự, và sau nhiều lần điều tra, nó dường như là một lỗi trong UIKit liên quan đến scrollviews và AutoLayout. Đây là 'sửa chữa' ...

Trong viewDidDisappear :, lưu contentOffset scrollview hiện tại đến một bất động sản, và đặt lại nó bằng không:

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [super viewDidDisappear:animated]; 

    self.previousContentOffset = self.scrollView.contentOffset; 

    self.scrollView.contentOffset = CGPointZero; 
} 

Sau đó, trong viewWillAppear :, thiết lập lại nội dung bù đắp trở lại những gì nó đã được trước đó. Tôi đã phải cử này vào hàng đợi chính để làm cho nó hoạt động chính xác:

- (void)viewWillAppear:(BOOL)animated 
{ 
    if (!CGPointEqualToPoint(self.previousContentOffset, CGPointZero)) 
    { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      self.scrollView.contentOffset = self.previousContentOffset; 
     }); 
    } 
} 
+0

trong' viewDidDisappear' và 'viewWillDisappear',' scrollview.contentOffset' là '{ 0, 0} '. Và 'self.scrollView.contentOffset = offset bằng tay;' không được thực hiện, chỉ hoạt động nếu thêm trễ. – jose920405

Các vấn đề liên quan