2013-05-26 3 views
2

Мне нужно, чтобы мое приложение вызывало метод в любое время, когда «возвращается» из-за того, что он не находится на переднем плане. Я понимаю, что есть несколько способов вернуть приложение на экран (например, щелкнуть значок приложения, чтобы вернуть его, нажав кнопку «Вид», уведомление, которое приходит из приложения, и появляется на главном экране пользователя, разблокировать их устройство, когда они заблокировали его при использовании приложения). Мне нужно вызвать метод в случае любого из этих обстоятельств. Мне также нужен метод, который нужно называть раньше, потому что что-то нужно изменить в пользовательском интерфейсе в зависимости от местоположения пользователя.Метод вызова, когда приложение выходит на передний план, разблокируется или открывается через уведомление

В настоящее время я использую это зарегистрировать метод:

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(appReturnsActive) name:UIApplicationDidBecomeActiveNotification 
object:nil]; 

И это вызвать метод:

- (void)appReturnsActive{ 
// code in here 
} 

Это, кажется, не срабатывает каждый раз. Кто-нибудь знает, почему он не работает? Любая помощь будет оценена!

ответ

4

Используйте AppDelegate-х -applicationWillEnterForeground: или зарегистрируйтесь, чтобы получить UIApplicationWillEnterForegroundNotification

См Doc яблока'S: UIApplicationDelegate Protocol reference:

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(appReturnsActive) 
    name:UIApplicationWillEnterForegroundNotification 
    object:nil]; 
3

Из документации по этому методу «Метод, указанный на notificationSelector должен иметь один и только один аргумент (экземпляр NSNotification) ». Поместите двоеточие после имени метода в вызове addObserver, а затем добавить экземпляр NSNotification в качестве параметра в методе ... смотри ниже ....

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(appReturnsActive:) name:UIApplicationDidBecomeActiveNotification 
object:nil]; 

и вызов метода

- (void)appReturnsActive:(NSNotification *)notification{ 
    // code in here 
} 
+0

Этот ответ правильный. 'code'-applicationWillEnterForeground:' code' не будет вызываться, если вы разблокируете телефон, и приложение уже было на переднем плане, когда вы его заблокировали. – mp3821

+0

Извините, мой плохой, не смотрел на исходный вопрос. Код должен работать одинаково с параметром уведомления или без него. Таким образом, это фактически не решает исходный вопрос. – mp3821