绘图在 iOS 13 设备上损坏。
我可以绘制直线水平线,但如果我尝试绘制垂直线,它只会绘制一个点,页面会上下滚动而不是绘制。
我使用 XCodes iOS Simulator 验证它可以在 iOS 12 设备上运行。
该bug也可以通过官方signature_pad演示进行复现http://szimek.github.io/signature_pad/
引用自 Safari 13 的发行说明:
Added support for one-finger accelerated scrolling to all frames and overflow:scroll}}elements eliminating the need to {{set-webkit-overflow-scrolling: touch.
Changed the default behavior on iPad for wide web pages with responsive meta-tags that require horizontal scrolling. Pages are scaled to prevent horizontal scrolling and any text is resized to preserve legibility.
https://developer.apple.com/documentation/safari_release_notes/safari_13_release_notes
这可能是这个错误的原因吗?
解决此问题的最简单方法是添加带有ontouchmove="return false"
的包装器
<div ontouchmove="return false">
<canvas id="signature" />
</div>
它也在 iOS 13.1 中得到修复
我必须将 onTouchMove 事件处理程序附加到我们的 React 应用程序的根容器 div。
如果我只是将画布包装在带有该事件处理程序的 div 中,则它不起作用。
但是,这会完全禁用触摸设备上的滚动。
因此,当用户单击画布时,我必须动态附加和分离 ontouchmove 事件。
最有用的评论
它也在 iOS 13.1 中得到修复