From e140f2a1c0a978316e3b9e1d70fc5408ed710910 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Tue, 20 Aug 2019 17:30:19 +0200 Subject: [PATCH] ui/app: (iOS) check for first responder status before changing focus Signed-off-by: Elias Naur --- ui/app/os_ios.m | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/ui/app/os_ios.m b/ui/app/os_ios.m index 641aeac5..6ff0a7ca 100644 --- a/ui/app/os_ios.m +++ b/ui/app/os_ios.m @@ -167,19 +167,33 @@ NSArray *_keyCommands; - (void)willMoveToWindow:(UIWindow *)newWindow { if (self.window != nil) { - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidBecomeKeyNotification object:self.window]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIWindowDidResignKeyNotification object:self.window]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIWindowDidBecomeKeyNotification + object:self.window]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIWindowDidResignKeyNotification + object:self.window]; } - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onWindowDidBecomeKey:) name:UIWindowDidBecomeKeyNotification object:newWindow]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onWindowDidResignKey:) name:UIWindowDidResignKeyNotification object:newWindow]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onWindowDidBecomeKey:) + name:UIWindowDidBecomeKeyNotification + object:newWindow]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(onWindowDidResignKey:) + name:UIWindowDidResignKeyNotification + object:newWindow]; } - (void)onWindowDidBecomeKey:(NSNotification *)note { - onFocus((__bridge CFTypeRef)self, YES); + if (self.isFirstResponder) { + onFocus((__bridge CFTypeRef)self, YES); + } } - (void)onWindowDidResignKey:(NSNotification *)note { - onFocus((__bridge CFTypeRef)self, NO); + if (self.isFirstResponder) { + onFocus((__bridge CFTypeRef)self, NO); + } } - (void)dealloc {