当用户在UIWebView(iOS SKD中的旧视图对象,将Web内容嵌入到我的混合对象)中的可内容编辑的DIV区域(稍后称为编辑器)中键入一些非拉丁字符时,我试图以编程方式结束文本撰写会话应用程序,出于某种原因,我需要使用它而不是使用WKWebView)。
当用户使用输入法编辑器(IME)输入一些非拉丁字符时,我的应用程序将在UI上建议一些特定于域的文本,并且用户可以选择它。
但是,我发现当用户通过单击本机UI(a UIButton
选择了这些域特定的文本,并且应用程序调用了document.exeCommand('insertText', false, 'my domain text')
时,编辑器仍然处于文本撰写会话中用户刚刚输入的文本上显示蓝色背景。
如果用户按下IME上的某些键,则会调用compositionend
事件,撰写会话将结束。
但是,我想以编程的方式结束它,以便获得更合理的用户体验。在其他情况下,我需要能够首先结束文本撰写会话,然后输入那些特定于域的文本。有可能吗?
这是我的混合应用程序的用户界面:
我已经尝试向编辑器发送一个compositionupdate事件,事件监听器确实被调用了,但是浅蓝色背景仍然位于文本下方,这意味着文本编写会话尚未结束。
这是我尝试过的代码:
var editor = document.getElementByID("myContendteditableArea")
editor.addEventListener('compositionend', function(e) {
console.log('text composition session end')
})
var event = new CompositionEvent('compositionend')
editor.dispatchEvent(event)
我还以编程方式尝试使编辑器变蓝,它确实触发了“ composed”事件,但是这会导致一些不必要的动画和UI更改。
任何帮助将不胜感激,谢谢。