0

このウィジェットを使用して、Titanium Alloy アプリで SVG を表示しています。

https://github.com/appcelerator-services/VectorImage

SVG は正常に表示されますが、iOS で SVG をタップすると onClick イベントが発生しません。Onclick は Android で動作します。onClick をウィジェット自体に適用するだけでなく、それを含む要素に適用しようとしました。含まれている要素はクリックできますが、SVG はクリックできません。

<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 の適用に何か問題がありますか?

4

2 に答える 2

2

ウィジェットは標準の Titanium Proxy オブジェクトではないため、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"/>

次に、JavaScriptでこれを実行できるはずです(ウィジェットのソースコードを見てわかることに基づいて)。

$.dashboardIcon.getView().addEventListener('click', function(){ alert("It Works"});

お役に立てれば!

于 2016-02-12T15:22:49.807 に答える
0

https://github.com/appcelerator-services/VectorImageからウィジェットのソース コードを変更することで、onclick を iOS で動作させることができました。controllers/widget.js の 197 行目に次の行を追加しました。これにより、SVG 要素を含む Web ビューに空の onclick リスナーが適用されます。

// 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 を起動するためのより良い方法についての提案を受け付けています。

于 2016-02-15T14:06:19.453 に答える