From 86ca3972211635de8d883327b52424dedf4fc98e Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 23 Jun 2021 02:44:34 -0500 Subject: [PATCH] Ignore key commands when the web view has focus. Fixes #3179 --- iOS/MasterFeed/MasterFeedViewController.swift | 6 ++++++ iOS/MasterTimeline/MasterTimelineViewController.swift | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 6233bf2b6..807d9c955 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -35,6 +35,12 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { private let keyboardManager = KeyboardManager(type: .sidebar) override var keyCommands: [UIKeyCommand]? { + + // If the first responder is the WKWebView (PreloadedWebView) we don't want to supply any keyboard + // commands that the system is looking for by going up the responder chain. They will interfere with + // the WKWebViews built in hardware keyboard shortcuts, specifically the up and down arrow keys. + guard let current = UIResponder.currentFirstResponder, !(current is PreloadedWebView) else { return nil } + return keyboardManager.keyCommands } diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 1a99608bd..9cc5a6152 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -33,6 +33,12 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner private let keyboardManager = KeyboardManager(type: .timeline) override var keyCommands: [UIKeyCommand]? { + + // If the first responder is the WKWebView (PreloadedWebView) we don't want to supply any keyboard + // commands that the system is looking for by going up the responder chain. They will interfere with + // the WKWebViews built in hardware keyboard shortcuts, specifically the up and down arrow keys. + guard let current = UIResponder.currentFirstResponder, !(current is PreloadedWebView) else { return nil } + return keyboardManager.keyCommands }