applicationWillResignActive убрать клавиатуру iPhone

Когда во время использования моего приложения получено SMS, я бы хотел, чтобы все открытые клавиатуры были закрыты. Как я могу сделать это из applicationWillResignActive в своем делегате приложения?


person eric.mitchell    schedule 04.11.2011    source источник


Ответы (2)


Реализуйте код, подобный приведенному в этом ответе. Зарегистрируйте свои контроллеры представления для UIApplicationWillResignActiveNotification. Когда уведомление сработает, вызовите resignFirstResponder. Таким образом, вы избегаете жесткой связи между вашим UIApplicationDelegate и вашим контроллером представления. Предполагая, что ваш контроллер представления имеет UITextField с именем textField:

- (void) applicationWillResign {
    [self.textField resignFirstResponder];
}

- (void) viewDidLoad { 
    [[NSNotificationCenter defaultCenter]
        addObserver:self
        selector:@selector(applicationWillResign)
        name:UIApplicationWillResignActiveNotification 
        object:NULL];
}
person jluckyiv    schedule 04.11.2011
comment
тогда как я могу отменить изменение, сделанное applicationWillResign? После того, как SMS закрыто, как я могу снова открыть клавиатуру? - person eric.mitchell; 04.11.2011
comment
[self.textField стал первым ответчиком] - person jluckyiv; 04.11.2011
comment
Да, но куда идет это заявление? - person eric.mitchell; 04.11.2011
comment
Я бы, наверное, поместил его в viewWillAppear в контроллере представления. Если вы хотите, вы можете добавить наблюдателя для UIApplicationDidBecomeActive в свой контроллер представления и создать метод в своем контроллере представления для обработки уведомления. - person jluckyiv; 04.11.2011
comment
Я не понял, что здесь вызывается UIApplicationDidBecomeActive. Спасибо! - person eric.mitchell; 04.11.2011

Для реализации Swift 5 попробуйте это

override func viewDidLoad() {
    super.viewDidLoad()
    let notificationCenter = NotificationCenter.default
    notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: UIApplication.willResignActiveNotification, object: nil)
}

@objc func appMovedToBackground() {
    print("App moved to background!")
}

Для получения дополнительной информации перейдите по ссылке https://www.hackingwithswift.com/example-code/system/how-to-detect-when-your-app-moves-to-the-background

person Rusiru Boteju    schedule 25.10.2020