2011-12-29 20 views
9

Trong một số trường hợp, không phải lúc nào, khi ứng dụng của tôi trình bày bộ điều khiển chế độ xem bằng cách sử dụng presentModalViewController:animated: với modalTransitionStyle đặt thành UIModalTransitionStyleFlipHorizontal màn hình chính iPhone hiển thị phía sau hoạt ảnh. Hầu hết thời gian nền đen như mong đợi. Không có gì bất thường khi tôi thiết lập số window hoặc rootViewController (số UITabBarController). Tôi bôi đen giao diện người dùng ứng dụng của mình nhưng bạn có thể thấy sự cố trong ảnh chụp màn hình được chụp bằng iPhone 4 trong khi quá trình chuyển đổi đang diễn ra.Điều gì sẽ khiến màn hình chính iPhone hiển thị sau một quá trình chuyển đổi lật phương thức?

Điều gì sẽ gây ra điều này? Tôi không biết làm thế nào để làm điều đó ngay cả khi tôi muốn hành vi này.

CHỈNH SỬA: Ảnh chụp màn hình này đã được gửi tới tôi bởi người kiểm tra, tôi chưa tự repro'ed nó. Họ nói với tôi rằng nó đã xảy ra trong một phiên ứng dụng cụ thể và một khi nó xảy ra nó đã xảy ra cho tất cả các quá trình chuyển đổi. Khi họ bỏ/khởi chạy lại ứng dụng, nó đã không xảy ra một lần nữa và họ đã không nhìn thấy nó kể từ đó. Tôi tự hỏi liệu đó có phải là điều tôi cần phải quan tâm không (tức là tôi có thể ngăn chặn nó trong mã).

EDIT 2: Ứng dụng này không sử dụng IB. Tất cả các bộ điều khiển/khung nhìn được tạo ra trong mã.

enter image description here

+0

Đây là số lẻ nó có vẻ hơi giống một lỗi. Không lý tưởng nếu bạn không thể tái tạo nó. Bạn có thiết lập màu nền của 'UIWindow' tại bất kỳ điểm nào có thể thiết lập rõ ràng có khả năng tránh điều này nhưng đó là suy đoán thuần túy. –

+0

Tôi không đặt 'backgroundColor' (hoặc bất kỳ thuộc tính hiển thị nào khác) của cửa sổ.Tôi cố gắng repro nó bằng cách thiết lập rõ ràng màu nền của cửa sổ thành 'clearColor' (và bị rối với' tabBarController.view' etc). Nếu tôi có thể ép buộc điều này xảy ra, điều đó có thể cho tôi cái nhìn sâu sắc, chưa tìm ra cách để làm điều đó. – XJones

+0

Yup đó là suy nghĩ của tôi. Mặc dù các mẫu Apple mới có xu hướng đặt rõ ràng cửa sổ 'self.window.backgroundColor = [UIColor whiteColor]; 'Tôi có thể sai nhưng rất có thể đó là tình huống tương tự với xibs trước xcode 4.x –

Trả lời

3

Tôi đã gặp vấn đề tương tự trước đây. Hãy thử sử dụng [viewController.view setBackgroundColor:[UIColor blackColor]]; trên chế độ xem mà bạn đang đẩy. Làm việc cho tôi dù sao đi nữa!

+0

cảm ơn, tôi hiện đang làm điều đó nhưng bạn có thể không thấy rằng trong các ý kiến. cho đến nay không còn repro. nó sẽ là tốt đẹp để biết làm thế nào để rõ ràng làm cho nó xảy ra khác hơn là một sự kiện ngẫu nhiên (tức là buggy). – XJones

+0

Vâng, tôi cảm thấy như nó có lẽ nhiều hơn/ít hơn một điều ngẫu nhiên xảy ra. Tôi chỉ quản lý để có nó xảy ra một vài lần liên tiếp trên iPad, lập trình hạnh phúc! – Chad

+0

Tôi không chắc chắn nếu điều này là thực sự liên quan nhưng tôi đã thực hiện thay đổi này và theo như tôi biết điều này chưa bao giờ tái phát. Tôi vẫn chưa bao giờ đích thân nhìn thấy nó. Tôi sẽ chấp nhận điều này để đóng nó. – XJones

0

Tôi không chắc chắn nhưng tôi nghĩ rằng điều này có thể được gây ra bởi một lỗi hoặc sửa đổi để mã chính 'UIApplication.h', một vấn đề với iOS hoặc một vấn đề với phiên bản Xcode bạn có.

Seb

0

Tôi đã thấy sự cố này xảy ra ngay cả với Ứng dụng iPhone của Facebook. Có thể đó là lỗi của Apple.

2

Điều này xảy ra khi iOS gửi cảnh báo bộ nhớ đến ứng dụng và khung ứng dụng tự động đổ tất cả các thành phần chế độ xem không hiển thị, ngoại trừ cấu trúc dữ liệu liên quan đến viewController sẽ ở lại và khi có tham chiếu đến chế độ xem sẽ tải khung nhìn từ nib một lần nữa (trong trường hợp loadView của bạn được gọi là tôi đoán), bạn nên đảm bảo mã xây dựng của bạn xem có thể tái tạo và vô hiệu hóa tất cả các đối tượng liên quan đến các thành phần khung nhìn trong phương thức viewDidUnload của trình điều khiển khung nhìn của bạn.

Bạn cũng có thể làm cho nó xảy ra bằng cách chạy ứng dụng của bạn bằng trình mô phỏng và khi bạn ở chế độ xem phương thức đó, kích hoạt mô phỏng "Cảnh báo bộ nhớ" từ menu "Thiết bị" ở đầu màn hình máy tính của bạn.

+0

Đây không phải là nguyên nhân của vấn đề này. Chính xác của bạn liên quan đến cách iOS (trước iOS 6) dỡ bỏ các khung nhìn để đáp lại các cảnh báo bộ nhớ nhưng đó không phải là vấn đề ở đây. – XJones

0

Hướng dẫn để sửa chữa vấn đề này:

  1. Tới XIB thực hiện và chọn View Controller thực hiện.
  2. Chuyển đến bảng thuộc tính ở bên phải. Chuyển đến Xem >> Màu nền.
  3. Bây giờ, hãy đặt màu bạn muốn quay lại quá trình chuyển đổi.

Hope this helps :)

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