反应本机,在Webview中渲染H5画布和画架JS形状

反应本机,在Webview中渲染H5画布和画架JS形状,webview,react-native,html5-canvas,easeljs,Webview,React Native,Html5 Canvas,Easeljs,我创建了一个HTML页面,可以使用画布和EaselJS进行绘制,我可以在Web应用程序中使用鼠标在画布上进行绘制。另外,我想将页面嵌入React native Webview 在iOS中,它成功地嵌入到Webview中,但无法用手指触摸绘制。我找不到原因,也找不出解决办法 在Web浏览器中: 在iOS应用程序中,它可以在Webview中渲染,但不能使用笔进行触摸绘制 下面的HTML代码(我添加了触摸事件侦听): var帆布,舞台,ctx; var工具类型=“”; //使用draw | era

我创建了一个HTML页面,可以使用画布和EaselJS进行绘制,我可以在Web应用程序中使用鼠标在画布上进行绘制。另外,我想将页面嵌入React native Webview

在iOS中,它成功地嵌入到Webview中,但无法用手指触摸绘制。我找不到原因,也找不出解决办法

在Web浏览器中:

在iOS应用程序中,它可以在Webview中渲染,但不能使用笔进行触摸绘制

下面的HTML代码(我添加了触摸事件侦听):


var帆布,舞台,ctx;
var工具类型=“”;
//使用draw | erase
使用工具=功能(工具){
tooltype=tool;//更新
}
功能自由\u手动\u绘图(){
//变数
var canvasx=$(canvas.offset().left;
var canvasy=$(canvas.offset().top;
var last_mousex=last_mousey=0;
var mousex=mousey=0;
var mousedown=false;
//穆斯敦
开始=功能(e){
last_mousex=mousex=parseInt(e.clientX-canvasx);
last_mousey=mousey=parseInt(e.clientY-canvasy);
mousedown=true;
};
$(画布).on('mousedown',start);
$(画布)。在('touchstart',start')上;
//鼠标
结束=功能(e){
mousedown=false;
};
$(画布).on('mouseup',end);
$(画布).on('touchend',end);
//鼠标移动
移动=功能(e){
mousex=parseInt(e.clientX-canvasx);
mousey=parseInt(例如clientY-canvasy);
如果(鼠标向下){
var shape=new createjs.shape();
如果(工具类型=='draw'){
shape.graphics.beginStroke(“黑色”).setStrokeStyle(2,'圆形').moveTo(last_mousex,last_mousey.lineTo(mousex,mousey);
阶段。添加儿童(形状);
stage.update();
}else if(工具类型=='erase'){
shape.graphics.beginStroke(“白色”).setStrokeStyle(10,'圆形').moveTo(last_mousex,last_mousey.lineTo(mousex,mousey);
阶段。添加儿童(形状);
stage.update();
}
}
last_mousex=mousex;
last_mousey=mousey;
};
$(画布).on('mousemove',move);
$(画布).on('touchmove',move);
}
函数createShape(类型,值=“”){
var shape=new createjs.shape();
开关(类型){
案例“循环”:
形状。图形。开始笔画(“黑色”)。画圈(0,0,50);
形状x=100;
形状y=100;
阶段。添加儿童(形状);
打破
案例“行”:
形状。图形。开始行程(“黑色”)。设置行程方式(10,‘圆形’)。移动到(30,30)。线条到(90,90);
形状x=20;
形状y=20;
阶段。添加儿童(形状);
打破
案例“rect”:
shape.graphics.beginStroke(“黑色”).drawRect(0,0,50,50);
形状x=70;
形状y=70;
阶段。添加儿童(形状);
打破
案例“文本”:
var text=new createjs.text(值为“20px Arial”,“#ff7700”);
text.x=20;
stage.addChild(文本);
document.getElementById('input_text')。值='';
打破
“笔”一案:
使用工具(“绘图”);
打破
案例“擦除”:
使用工具(“擦除”);
打破
}
stage.update();
}
函数getText(){
返回文档.getElementById('input_text')。值
}
函数init(){
如果(画布){
文件。removeChild(画布);
}
canvas=document.createElement('canvas');
画布宽度=300;
帆布高度=300;
var parent=document.getElementById('canvas');
parent.appendChild(画布);
ctx=canvas.getContext('2d');
stage=newcreatejs.stage(画布);
自由手绘();
}
React本机代码段为:

render() {
              return (
                <View style={styles.container}>
                  <WebView source={ 
                Platform.OS === 'ios' ?       require('../../server/public/index.html') : {uri: 'file:///android_asset/index.html'}}
                  javaScriptEnabled={true}
                  ref={c => { this.webview = c; }}
                  onLoad={this.injectJavaScript}
                  startInLoadingState={true}
                  mediaPlaybackRequiresUserAction={true}
                  scrollEnabled={ this.props.scrollEnabled || false } />
                </View>
              )
            }
render(){
返回(
{this.webview=c;}}
onLoad={this.injectJavaScript}
startInLoadingState={true}
MediaPlaybackRequiresSerAction={true}
scrollEnabled={this.props.scrollEnabled | | false}/>
)
}
可以在舞台上创建形状,不能用手指触摸绘制

同时,在iOS中成功呈现HTML页面,但无法在HTML中同时加载js代码和js引用链接。 如React native中的8089/505号问题

有什么帮助吗


谢谢

您应该添加代码以启用触摸事件。添加以下代码以启用它

 createjs.Touch.enable(stage);
有关更多信息,请参阅以下文件

您应该添加代码以启用触摸事件。添加以下代码以启用它

 createjs.Touch.enable(stage);
有关更多信息,请参阅以下文件