ios - IOS设备键盘在单击事件时未打开itext插入带有Angular 9的fabricjshammerjs
问题描述
我将fabricjs用于canvas,将hammerjs用于Angular 9的触摸事件。我有一个hammerjs的单击事件,它创建了一个fabric的IText对象。单击可创建织物并将其填充到画布上,但设备键盘未打开以在文本对象中添加文本。fabricjs 的 IText 在内部创建TEXTAREA以允许文本输入。
试过:
1. canvas.getActiveObject().enterEditing();
canvas.getActiveObject().hiddenTextarea.focus();
2. document.querySelector('[data-fabric-hiddentextarea]').setAttribute("autofocus", "");
document.querySelector('[data-fabric-hiddentextarea]').focus();
document.querySelector('[data-fabric-hiddentextarea]').click();
上面的解决方案也用 settimeout 进行了尝试。
请建议。提前致谢
解决方案
通过使用 VanilaJStouchend
事件找到了一种方法。不得不删除 HammerJS 的doubletap
事件并使用touchend
事件。
let element = document.getElementById('canvasId');
let timedout;
let lastTaped = 0;
element.addEventListener('touchend', (event) => {
var currentTime = new Date().getTime();
var tapLength = currentTime - lastTaped;
clearTimeout(timedout);
if (tapLength < 500 && tapLength > 0) {
// code to add the iText object
event.preventDefault();
}
lastTaped = currentTime;
}
});
谢谢 :) 继续编码
推荐阅读
- json - JsonSerializer 默默地无法反序列化我的对象
- ios - 编辑通过搜索栏选择的记录时应用程序崩溃
- windows-subsystem-for-linux - 这是导入 WSL 导出、覆盖“默认”安装的正确方法吗?
- spring - Spring Boot 忽略所有未使用的组件/bean?
- mariadb - MariaDB如何在现有数据库中进行字符集转换?
- node.js - 使用 ngrx 部分同步客户端状态
- c# - Windows 服务可以使用由另一个 Windows 服务托管的 WCF 服务吗?
- java - 无法实例化类型(类)?
- angular - 如何避免 Angular 中重复的 ViewChildren?
- perl - perl 中的 getopts 问题