2011-08-20 27 views
9

Tôi đã tự hỏi liệu có cách nào để ngăn chặn một cửa sổ bật lên iPad tự động loại bỏ bất cứ khi nào bạn chạm vào màn hình bên ngoài cửa sổ bật lên không? Nếu không, có một số loại phương pháp tương tự như "popoverDidDismiss" mà tôi có thể gọi để biết khi nào cửa sổ bật lên bị loại bỏ?Dừng UIPopover tự động bỏ qua

Trả lời

25

Có thể. Điều này là đúng trong tài liệu của Apple.

Khi cửa sổ bật lên bị loại bỏ do người dùng nhấn bên ngoài chế độ xem cửa sổ bật lên, cửa sổ bật lên tự động thông báo cho đại biểu của hành động. Nếu bạn cung cấp một đại biểu, bạn có thể sử dụng đối tượng này để ngăn chặn việc loại bỏ cửa sổ bật lên hoặc thực hiện các hành động bổ sung để phản hồi việc loại bỏ. Phương thức ủy quyền popoverControllerShouldDismissPopover: cho phép bạn kiểm soát liệu cửa sổ bật lên có thực sự bị loại bỏ hay không. Nếu đại biểu của bạn không thực hiện các phương pháp, hoặc nếu thực hiện của bạn trả về CÓ, bộ điều khiển loại bỏ các cửa sổ popover và gửi một thông báo popoverControllerDidDismissPopover: cho đại biểu.

Chỉ cần trở về NO với phương pháp đại biểu popoverControllerShouldDismissPopover:

Dưới đây là một liên kết để đọc thêm.

Popover Guide

+0

Cảm ơn đã nhanh chóng Đáp lại. Tôi đã thử thực hiện điều này và nó dường như không hoạt động. Tôi nên đặt nó vào .m để xem nơi cửa sổ bật lên xuất hiện, không phải khung nhìn bên trong cửa sổ bật lên, phải không? –

+0

bạn có làm việc này không? nếu vậy, làm thế nào? nếu không, tại sao nó được đánh dấu là câu trả lời đúng? – ngb

+0

Bạn có nhớ đặt bộ điều khiển chế độ xem của bạn là đại biểu cho bộ điều khiển bật lên không? –

4
- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController 
{ 
    return NO; 
} 

Đó nào đó cho bạn và bạn có thể gán một mục nút thanh cụ thể hay cái gì khác trong popover của bạn để bỏ qua những popover.

+0

Tôi đã thử triển khai tính năng này và dường như không hoạt động. Tôi nên đặt nó vào .m để xem nơi cửa sổ bật lên xuất hiện, không phải khung nhìn bên trong cửa sổ bật lên, phải không? –

+0

Có. Bạn đã chỉ ra việc triển khai UIPopoverControllerDelegate trong tệp tiêu đề? – Bourne

+0

Tôi nghĩ vậy. Trong tệp chứa nội dung của cửa sổ bật lên, trong .h Tôi có giao thức OptionsViewControllerDelegate - (void) didPick: (NSString *) string; kết thúc ủy quyền id; và trong .m: tổng hợp đại biểu; và trong .h của tệp nơi cửa sổ bật lên xuất hiện tôi có: giao diện exampleViewController: UIViewController { UIPopoverController * popoverController; OptionsViewController * optionsViewController; } Sau đó tổng hợp UIpopoverController và OptionsViewController trong .m. Tôi có thiếu gì không? Cảm ơn. –

1

thậm chí u có thể sử dụng

self.modallnpopover = yes;

nếu bạn muốn bỏ nó trong một cái nhìn đặc biệt

self.modallnpopover = no;

nếu bạn không muốn bỏ nó

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