#xcode #ios7
#xcode #ios7
Вопрос:
Хорошо, у меня есть приложение, которое запускает таймер. Если пользователь наблюдает за обратным отсчетом таймера приложения (например, приложение не спит и активно на переднем плане) Я хочу, чтобы пользователю было показано предупреждение. Я добавил этот код в свой таймер, когда он достигает 0:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Reminder" message:@"It's time!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
Проблема, с которой я сталкиваюсь, заключается в том, что если я переведу телефон в спящий режим или сделаю приложение неактивным каким-либо другим способом, у меня есть локальная настройка уведомлений для обработки этого предупреждения, поэтому, когда пользователь возвращается в приложение, я не хочу, чтобы они видели предупреждение, упомянутое выше. Это ненужный «щелчок», который они должны сделать.
Есть ли способ автоматически отключить это предупреждение, когда приложение либо переходит в фоновый режим, либо выходит на передний план, если оно было запущено?
Ответ №1:
Вы должны использовать NSNotificationCenter в определении UIAlertView.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK",nil];
[alert show];
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationWillResignActiveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notification){
[alert dismissWithClickedButtonIndex:0 animated:NO];
}];
Ответ №2:
Автоматического отключения нет.
Вы должны сообщить, что ваше приложение стало активным (из UIApplicationDelegate
) для вашего UIAlertView
.
Для этого существует множество методов, вы можете сохранить ссылку на это предупреждение, AppDelegate
чтобы отклонить его, или использовать некоторые NSNotification
сообщения от делегата и наблюдать у вас ViewController
или где-либо, где вы показываете это предупреждение.
Комментарии:
1. Спасибо, Винсент, но я не уверен, как «сохранить ссылку» на предупреждение в AppDelegate? Любой пример кода будет оценен…
2. Спасибо, Винсент… очень полезно. Я просто пытаюсь закончить то, что начал, чтобы я мог перейти от Objective-C к Swift, чтобы не тратить больше времени на «обучение» на первом.
3. Изучение Objective-C не является пустой тратой времени, поскольку оно не исчезнет, как только вы «надеетесь». Кроме того, многие концепции (например, ARC) исходят из него, поэтому вам будет полезно изучить его. Как будто вы выиграете от изучения C… И извините, что беспокою вас, но Swift не проще, чем Objective-C. Если вы не знаете, что такое «сохранение ссылки на объект», это не вопрос языка, а базовые знания в области программирования, в которых я не могу вам помочь. Я не хотел быть грубым, когда сказал вам пойти почитать несколько книг. Это правда, вы должны изучать программирование, а не «язык».
Ответ №3:
В качестве альтернативы вы могли бы использовать … https://github.com/sdarlington/WSLViewAutoDismiss