You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启Apple Pencil Scribble点击输入框致Cordova应用崩溃如何解决

问题根因

开启Apple Pencil的Scribble功能后点击输入框触发的崩溃,是iOS Scribble功能与Cordova iOS平台WebView桥接层的兼容问题:系统识别到可输入元素时,会调用DOMRange实例的asDomRange方法获取文本选区范围,6.2.0版本之前的cordova-ios平台(以及旧版独立WKWebView插件)未实现该方法,最终抛出*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DOMRange asDomRange]: unrecognized selector sent to instance异常并终止应用。

适配方案
  • 方案一(推荐):升级Cordova iOS平台版本
    直接将项目的iOS平台升级到6.2.0及以上正式版,官方已经在版本迭代中完成了Scribble相关的方法兼容,无需额外修改代码即可正常使用手写输入功能。执行升级命令:
    cordova platform rm ios
    cordova platform add ios@6.2.0
    
    如果项目中单独安装了cordova-plugin-wkwebview-engine插件,升级平台后需要卸载该插件,直接使用cordova-ios内置的WKWebView实现,避免插件版本与平台内置逻辑冲突。
  • 方案二(适配无法升级平台的场景):手动补全缺失方法
    在Xcode打开的iOS原生工程中,新建Objective-C分类文件,给DOMRange类补充缺失的asDomRange方法实现,代码如下:
    //  DOMRange+ScribbleFix.h
    #import <WebKit/WebKit.h>
    @interface DOMRange (ScribbleFix)
    @end
    
    //  DOMRange+ScribbleFix.m
    #import "DOMRange+ScribbleFix.h"
    @implementation DOMRange (ScribbleFix)
    - (instancetype)asDomRange {
        return self;
    }
    @end
    
    将两个文件添加到iOS项目的编译源中,重新打包即可解决崩溃问题。
  • 方案三(临时兜底):禁用Scribble触发逻辑
    如果业务场景不需要支持Apple Pencil手写输入,可以在config.xml中添加配置禁用WebView的输入辅助栏,阻止系统触发Scribble的选区检测:
    <preference name="HideKeyboardFormAccessoryBar" value="true" />
    

内容的提问来源于stack exchange,提问作者Josiah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:27:18