diff --git a/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift b/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift index 179878120b..1268e4ed6b 100644 --- a/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift +++ b/ios/engine/KMEI/KeymanEngine/Classes/KeymanWebViewController.swift @@ -143,7 +143,7 @@ extension KeymanWebViewController { } let components = result.components(separatedBy: ",") let x = CGFloat(Float(components[0])!) - let y = CGFloat(Float(components[1])!) + Manager.shared._inputViewController!.activeTopBarHeight // KMW doesn't adjust for this! + let y = CGFloat(Float(components[1])!) let w = CGFloat(Float(components[2])!) let h = CGFloat(Float(components[3])!) completion(KeymanWebViewController.keyFrame(x: x, y: y, w: w, h: h)) diff --git a/web/source/kmwembedded.ts b/web/source/kmwembedded.ts index 60d6ed33d9..055a92241f 100644 --- a/web/source/kmwembedded.ts +++ b/web/source/kmwembedded.ts @@ -407,8 +407,10 @@ namespace com.keyman.text { var w=key.offsetWidth, h=key.offsetHeight, - x=dom.Utils.getAbsoluteX(key) - dom.Utils.getAbsoluteX(osk.vkbd.kbdDiv) + w/2, - y=dom.Utils.getAbsoluteY(key) - dom.Utils.getAbsoluteY(osk.vkbd.kbdDiv); + // Since the full OSKManager '_Box' is displayed within the keyboards' WebViews, + // these calculations should be performed with respect to that, rather than osk.vkbd.kbdDiv. + x=dom.Utils.getAbsoluteX(key) - dom.Utils.getAbsoluteX(osk._Box) + w/2, + y=dom.Utils.getAbsoluteY(key) - dom.Utils.getAbsoluteY(osk._Box); return x+','+y+','+w+','+h; };