2011-08-23 13 views
9

Phải có một số thứ cơ bản mà tôi thiếu ở đây. Tôi có một UIScrollView mở, được điều khiển bởi một khách hàng UIScrollViewController (gọi là DataController). Tại một thời điểm nào đó trong thời gian, đầu vào từ người sử dụng là cần thiết, vì vậy tôi mở một UIViewController modal từ DataController:Loại bỏ các thay đổi chế độ xem cơ bản UIScrollView

ElementSelectController *viewController = [[ElementSelectController alloc] initWithNibName:@"ElementSelectController" bundle:nil]; 
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
viewController.theDelegate = self; 
[self presentModalViewController:viewController animated:YES]; 

Khi người dùng đã sẵn sàng với quan điểm phương thức, nó được bác bỏ một lần nữa. Điều này cũng xảy ra từ DataController:

[self dismissModalViewControllerAnimated:YES]; 

Tất cả đều hoạt động tốt. Nhưng khi chế độ xem phương thức biến mất, nó chỉ ra rằng UIScrollView cơ bản được thay đổi kích thước thành toàn màn hình và được cuộn đến vị trí (0,0). Đây là trường hợp ngay cả với một chế độ xem đơn giản mà không làm bất cứ điều gì khác nhưng được miễn nhiệm. Rõ ràng, tôi muốn UIScrollView giữ nguyên trạng thái và kích thước giống như trước khi chế độ xem phương thức xuất hiện.

Bất kỳ ý tưởng nào tôi đang làm sai?

Tôi đã kiểm tra stack trace khi khung UIScrollView được thiết lập (thông qua một break-điểm trong setFrame: một tùy chỉnh UIScrollView), và có vẻ như nó được gọi là từ:

-[UITransitionView transition:fromView:toView:] 

được gọi qua , thông qua từ cuộc gọi dismissModalViewControllerAnimated.

+0

Tôi không biết tại sao điều đó xảy ra, nhưng bạn luôn có thể lưu trữ nội dung UIScrollViewOffOffset và đặt lại nếu sau khi phương thức biến mất. – NWCoder

+0

Vui lòng hiển thị một số mã của bạn từ chế độ xem ... –

+0

Cảm ơn. Đó là những gì tôi làm bây giờ như một công việc xung quanh. Tôi lưu khung và contentOffset của UIScrollView và đặt lại chúng ngay lập tức sau khi cuộc gọi bỏ qua. Điều đó dường như hoạt động, nhưng nó giống như một hack. Tôi chắc chắn muốn biết cách xử lý thông thường là gì. – fishinear

Trả lời

1
-[UITransitionView transition:fromView:toView:] 

Hoàn toàn bình thường khi chuyển từ chế độ xem lại về chế độ xem của bạn. Đây là hoạt hình, v.v., hãy thử bạn với phương thức hoạt hình nếu bạn nghĩ điều đó có thể tạo nên sự khác biệt.

Hãy xem bạn viewWillAppear, WillDisappear, DidAppear... Ngay cả những LoadUnload nếu thích hợp, mặc dù không những được mời gọi để kiểm tra tầm thường của bạn không có gì trong phương thức. Thử đặt một số đăng nhập vào các phương thức đó để xem phương thức nào được gọi.

Ngoài ra, bạn có nói rằng không có mã tùy chỉnh trong các phương pháp đó hay bộ điều khiển của bạn không ghi đè lên tất cả? Có thể tạo sự khác biệt.

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