onClick不在Appcelerator Alloy应用程序中SVG的iOS上工作
我正在使用此小部件在我的钛合金应用程序中显示SVG: SVG显示得很好,但是当我在iOS上点击SVG时,onClick事件不会触发。Onclick在Android上工作。我已经尝试将onClick应用于小部件本身,并将其应用于包含的元素。我可以单击包含元素,但不能单击SVGonClick不在Appcelerator Alloy应用程序中SVG的iOS上工作,ios,svg,appcelerator,appcelerator-titanium,appcelerator-alloy,Ios,Svg,Appcelerator,Appcelerator Titanium,Appcelerator Alloy,我正在使用此小部件在我的钛合金应用程序中显示SVG: SVG显示得很好,但是当我在iOS上点击SVG时,onClick事件不会触发。Onclick在Android上工作。我已经尝试将onClick应用于小部件本身,并将其应用于包含的元素。我可以单击包含元素,但不能单击SVG <View class="dashboardGridCell" onClick="goToPayBill"> <View class="dashboardIcon"> <
<View class="dashboardGridCell" onClick="goToPayBill">
<View class="dashboardIcon">
<Widget class="dashboardIconSvg" src="com.capnajax.vectorimage" svg="svg/circle-check.svg" style="svg/white-fill.css" onClick="goToPayBill"/>
</View>
<Label class="dashboardIconLabel">Pay Bill</Label>
</View>
付账单
是否有更好的小部件用于显示SVG,或者我在应用onclick时有什么地方做错了?小部件不支持XML中的onclick处理程序,因为它们不是标准的Tianium代理对象,它们可以是其创建者定义的任何对象。另外,现在,即使指定了onClick属性,我们也不会计算作为函数传入的onClick参数 要在小部件上设置单击事件,您需要在javaScript中执行此操作(因此您需要给它一个id) 在XML中,将其更改为以下内容:
<Widget id="dashboardIcon" class="dashboardIconSvg" src="com.capnajax.vectorimage" svg="svg/circle-check.svg" style="svg/white-fill.css" onClick="goToPayBill"/>
希望这有帮助 小部件不支持XML中的onClick处理程序,因为它们不是标准的代理对象,它们可以是创建者定义的任何对象。另外,现在,即使指定了onClick属性,我们也不会计算作为函数传入的onClick参数 要在小部件上设置单击事件,您需要在javaScript中执行此操作(因此您需要给它一个id) 在XML中,将其更改为以下内容:
<Widget id="dashboardIcon" class="dashboardIconSvg" src="com.capnajax.vectorimage" svg="svg/circle-check.svg" style="svg/white-fill.css" onClick="goToPayBill"/>
希望这有帮助 通过修改来自的小部件的源代码,我能够让onclick在iOS上工作。在controllers/widget.js的第197行,我添加了这一行,它将空的onclick侦听器应用于包含SVG元素的webview:
// Added empty click listener to allow click events to be passed through
view.addEventListener('click', function() {});
在我自己看来,我能够对包含的元素应用onclick,当我点击SVG时,onclick现在可以正确触发。我不必向小部件元素添加onclick,也不必在控制器的javascript中应用onclick
<View class="dashboardGridCell" onClick="goToPayBill">
<View class="dashboardIcon">
<Widget class="dashboardIconSvg" src="com.capnajax.vectorimage" svg="svg/circle-check.svg" style="svg/white-fill.css"/>
</View>
<Label class="dashboardIconLabel">Pay Bill</Label>
</View>
付账单
使用第一个答案中的方法通过JavaScript应用onclick不起作用。虽然这个修复对我来说很有效,但我愿意接受关于如何更好地启动onclick的建议。我能够通过修改来自的小部件的源代码使onclick在iOS上运行。在controllers/widget.js的第197行,我添加了这一行,它将空的onclick侦听器应用于包含SVG元素的webview:
// Added empty click listener to allow click events to be passed through
view.addEventListener('click', function() {});
在我自己看来,我能够对包含的元素应用onclick,当我点击SVG时,onclick现在可以正确触发。我不必向小部件元素添加onclick,也不必在控制器的javascript中应用onclick
<View class="dashboardGridCell" onClick="goToPayBill">
<View class="dashboardIcon">
<Widget class="dashboardIconSvg" src="com.capnajax.vectorimage" svg="svg/circle-check.svg" style="svg/white-fill.css"/>
</View>
<Label class="dashboardIconLabel">Pay Bill</Label>
</View>
付账单
使用第一个答案中的方法通过JavaScript应用onclick不起作用。尽管此修复方法对我有效,但我愿意接受关于如何更好地启动onclick的建议。谢谢您的帮助,伯特。我试过你的方法,但没用。因此,我进一步研究了小部件的源代码,发现它在某些情况下使用的是webview,而不是view。最后,我修改了小部件的源代码,在webview创建之后立即向其添加了一个空的click侦听器:
view.addEventListener('click',function(){})
以某种方式允许正确传递包含元素的侦听器。不过,我认为还有比这更好的解决方案。嗨,伯特,快速修改你的代码片段-你在警报后缺少一个右括号。再次感谢!瓦莱丽-很高兴听到你解决了问题。如果你有一个代码片段,你会有兴趣看看这个如何修复它。谢谢你捕捉到我的代码错误:)谢谢你的帮助,伯特。我试过你的方法,但没用。因此,我进一步研究了小部件的源代码,发现它在某些情况下使用的是webview,而不是view。最后,我修改了小部件的源代码,在webview创建之后立即向其添加了一个空的click侦听器:view.addEventListener('click',function(){})
以某种方式允许正确传递包含元素的侦听器。不过,我认为还有比这更好的解决方案。嗨,伯特,快速修改你的代码片段-你在警报后缺少一个右括号。再次感谢!瓦莱丽-很高兴听到你解决了问题。如果你有一个代码片段,你会有兴趣看看这个如何修复它。感谢您捕获我的代码错误:)这篇关于iOS上的WebView的文档似乎很相关,但听起来iOS上的WebView在默认情况下应该将触摸事件传递给它们的父元素。我尝试更改小部件中的willhandletouchs
设置,但没有效果。这篇关于iOS上WebView的文档似乎是相关的,但听起来iOS上的WebView在默认情况下应该将触摸事件传递给它们的父元素。我尝试更改小部件中的willhandletouchs
设置,但没有效果。