2009-02-26 21 views
31

Mã để đăng ký một sự kiện như applicationWillResignActive ở bất kỳ đâu trong ứng dụng iphone của bạn?Làm thế nào để phản ứng với applicationWillResignActive từ bất cứ đâu?

[UPDATE]

Hãy để tôi thuật lại câu hỏi của mình. Tôi không muốn trả lời điều này trong ủy nhiệm ứng dụng của tôi, mà đúng hơn là lắng nghe sự kiện này từ một lớp khác. Là có thể hoặc tôi cần phải vượt qua sự kiện từ đại biểu ứng dụng cho các lớp học có liên quan?

Trả lời

71

Có vẻ như bạn đang tìm mã này.

- (void) applicationWillResign { 
    NSLog(@"About to lose focus"); 
} 

- (void) myMethod { 
    [[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(applicationWillResign) 
     name:UIApplicationWillResignActiveNotification 
     object:NULL]; 
} 
+10

Bạn cũng nên xóa người quan sát tại một số điểm, thường trong dealloc: \t [[NSNotificationCenter defaultCenter] removeObserver: self]; – LearnCocos2D

+0

@ LearnCocos2D Tại sao? – Houssni

+1

NSNotificationCenter có thể gặp sự cố khi gửi thư đến một người quan sát được phân phối lại. Từ tài liệu: ["Hãy chắc chắn gọi removeObserver: name: object: trước notificationObserver hoặc bất kỳ đối tượng nào được chỉ định trong addObserver: selector: name: object: được deallocated."] (Https://developer.apple.com/library/mac /documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/index.html#//apple_ref/occ/instm/NSNotificationCenter/addObserver:selector:name:object :) – LearnCocos2D

0

Chủ đề và câu hỏi của bạn đang hỏi những điều hơi khác nhau.

Ứng dụng của bạn sẽ nhận được ứng dụngWillResignActive, cùng với ứng dụngWillTerminate, tự động. Không cần đăng ký, chỉ cần triển khai chức năng trong ứng dụng của bạn.

Cách trả lời, điều này là ứng dụng. Mặc dù bạn có thể chọn không thực hiện hành vi được đề xuất nào là bạn ngừng hoặc làm chậm bất kỳ chức năng không quan trọng nào. Ví dụ. nếu bạn là một trò chơi, bạn sẽ ngừng cập nhật màn hình và/hoặc tạm dừng trò chơi.

4

Thực hiện phương pháp dưới đây trong đại biểu ứng dụng của bạn:

-(void)applicationWillResignActive:(UIApplication *)application 

này cho phép bạn phản ứng khi ứng dụng không hoạt động - khi đây là trường hợp, nó được thực hiện nhưng không cử các sự kiện sắp tới. Điều này xảy ra, ví dụ, khi một cửa sổ lớp phủ bật lên hoặc khi thiết bị bị khóa.

Ngay trước khi nó trở nên không hoạt động, ứng dụng cũng đăng UIApplicationWillResignActiveNotification.

11

Hãy xem tài liệu cho các phương pháp bạn đang nói về:

applicationWillResignActive:

Cho các đại biểu rằng việc áp dụng sẽ bị vô hiệu. Phương pháp này là tùy chọn.

- (void)applicationWillResignActive:(UIApplication *)application 

[...]

Thảo luận

[...]

Ngay trước khi nó trở nên không hoạt động, các ứng dụng cũng đăng tải một UIApplicationWillResignActiveNotification.

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