2011-01-02 29 views
9

Tôi có một số uiPopoverControllers trong ứng dụng iPad phổ dụng của mình. Bây giờ tôi có một yêu cầu để kích hoạt một chức năng khi một popover nhất định đã bị loại bỏ. Tôi có thể làm điều này một cách dễ dàng nếu người dùng nhấp vào "đóng" bên trong cửa sổ bật lên, nhưng nếu họ chạm vào màn hình để ẩn cửa sổ bật lên, tôi không thể kích hoạt chức năng của mình.ipad phát hiện khi UIPopoverControllers bị loại bỏ

Tôi đã được googling một thời gian và dường như không thể tìm thấy bất kỳ phương pháp đại biểu mà tôi có thể có thể sử dụng trong bộ điều khiển xem chính của tôi để nắm bắt chúng. Tôi sẽ yêu một cái gì đó như didDismissPopoverController - nhưng tôi đoán là nó không có sẵn.

Nếu không, tôi đoán điều duy nhất cần làm là phát hiện các chạm và kích hoạt sau đó? Về cơ bản tôi đang làm nổi bật một hàng UITableView và tải cửa sổ bật lên. Tôi cần phải bỏ chọn hàng - vì vậy chỉ muốn gọi [table reloaddata].

Cảm ơn bạn đã giúp đỡ về điều này!

Trả lời

21

Bạn cần gán một đại biểu cho UIPopoverController và sau đó triển khai phương thức - (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController. Ví dụ:

@interface FooController : UIViewController <UIPopoverControllerDelegate> { 
    // ... 
} 
// ... 
@end 

Khi bạn nhanh chóng UIPopoverController (nói, ví dụ này, trong FooController) ...

UIPopoverController *popover = // ... 
popover.delegate = self; 

Sau đó, bạn sẽ thực hiện phương pháp này:

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController { 
    // do something now that it's been dismissed 
} 

Cấp, tôi chưa thử nghiệm điều này nhưng có vẻ như nó sẽ hoạt động ...

Hy vọng điều này có ích!

4

Bạn có thể sử dụng phương thức ủy quyền popoverControllerDidDismissPopover sau khi gán sau: self.popoverController.delegate = self;

Lưu ý rằng popoverControllerDidDismissPopover delegate method không được gọi nếu bạn lập trình gọi [self.popoverController dismissPopoverAnimated: YES].

+0

Điều này đúng, xem trong tài liệu: 'Trình điều khiển cửa sổ bật lên không gọi phương thức này để phản hồi các lệnh gọi có lập trình đến phương thức dismissPopoverAnimated:. Nếu bạn bỏ qua popover theo chương trình, bạn nên thực hiện bất kỳ hành động dọn dẹp nào ngay lập tức sau khi gọi phương thức dismissPopoverAnimated :' –

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