From 07475cfaf574ed68e347f1bb5940e040b38d71ff Mon Sep 17 00:00:00 2001 From: jahorton Date: Tue, 7 Apr 2020 10:30:31 +0700 Subject: [PATCH] fix(ios): globe key 'longpress' workaround --- .../KeymanEngine/Classes/KeymanWebViewController.swift | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift b/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift index b7781c044e..c724868086 100644 --- a/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift +++ b/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift @@ -449,9 +449,12 @@ extension KeymanWebViewController: WKScriptMessageHandler { self.touchHoldBegan() } else if fragment.hasPrefix("#menuKeyDown-") { + perform(#selector(self.menuKeyHeld), with: self, afterDelay: 0.5) menuKeyDown(self) delegate?.menuKeyDown(self) } else if fragment.hasPrefix("#menuKeyUp-") { + // Blocks summoning the globe-key menu for quick taps. (Hence the 0.5 delay.) + NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(self.menuKeyHeld), object: self) menuKeyUp(self) delegate?.menuKeyUp(self) } else if fragment.hasPrefix("#hideKeyboard-") { @@ -834,6 +837,10 @@ extension KeymanWebViewController: UIGestureRecognizerDelegate { setPopupVisible(true) } + @objc func menuKeyHeld(_ keymanWeb: KeymanWebViewController) { + self.delegate?.menuKeyHeld(self) + } + @objc func subKeyButtonClick(_ sender: UIButton) { let keyIndex = sender.tag if keyIndex < subKeyIDs.count && keyIndex < subKeyTexts.count {