티타늄을 사용하여 사이드 패널을 구현하려고합니다. 사이드 패널 메뉴에 몇 가지 옵션이 있으며 각 메뉴 옵션마다 다른보기가로드됩니다. 옵션 중 하나가 웹보기를로드합니다. 웹 사이트 또는 html은 webview 구성 요소에 완벽하게로드되지만이 구성 요소와 상호 작용할 수는 없습니다. 링크를 클릭하거나 아무것도 할 수 없다는 의미에서 그렇습니다. 이것은 로컬 및 원격 html 모두에서 발생합니다. 측면 패널에 대한 티타늄 SDK webview 구성 요소가로드되는 웹 사이트와의 상호 작용을 허용하지 않습니다.
, 나는 그의 GitHub의 프로젝트에 서랍 리카르도 Alcocer에서 제공하는 위젯, 링크를 통합하고 것은 - https://github.com/ricardoalcocer/alloy-widget-drawermenu이 여기에 코드 블록을 이동합니다.
이 Index.xml
<Alloy>
<Window class="container" id="win">
<Require type="widget" src="com.alcoapps.drawermenu" id="drawermenu"/>
</Window>
</Alloy>
mainview.xml (웹보기를로드 사이드 메뉴 옵션)
<Alloy>
<View id="mainView">
<View id="mainTopBar">
<View id="menuButton"/>
</View>
<WebView id="chartView" url="http://www.google.co.in"/>
</View>
</Alloy>
menuview.xml (사이드 패널)
<Alloy>
<View id="menuView">
<View id="menuTopBar"/>
<TableView class="menuTable" id="menuTable">
<TableViewRow class="tableRow" id="row1">
<View id="rowContainer">
<View id="rowSkull" class="rowIcon"/><Label id="rowLabel" class="rowLabel">MainView</Label>
</View>
</TableViewRow>
<TableViewRow class="tableRow" id="row2">
<View id="rowContainer">
<View id="rowGear" class="rowIcon"/><Label id="rowLabel" class="rowLabel">Settings</Label>
</View>
</TableViewRow>
</TableView>
</View>
</Alloy>
하는 index.js
var controls=require('controls');
// get main and menu view as objects
var menuView=controls.getMenuView();
var mainView=controls.getMainView();
// attach event listener to menu button
mainView.menuButton.add(controls.getMenuButton({
h: '60',
w: '60'
}));
//Minor changes to click event. Update the menuOpen status;
mainView.menuButton.addEventListener('click',function(){
$.drawermenu.showhidemenu();
$.drawermenu.menuOpen=!$.drawermenu.menuOpen;
}); // method is exposed by widget
// get config view as objects
var configView=controls.getConfigView();
//add menu view to ConfigView exposed by widget
configView.menuButton.add(controls.getMenuButton({
h: '60',
w: '60'
}));
//Minor changes to click event. Update the menuOpen status;
configView.menuButton.addEventListener('click',function(){
$.drawermenu.showhidemenu();
$.drawermenu.menuOpen=!$.drawermenu.menuOpen;
}); // method is exposed by widget
$.drawermenu.init({
menuview:menuView.getView(),
mainview:mainView.getView(),
duration:200,
parent: $.index
});
//variable to controler de open/close slide
var activeView = 1;
// add event listener in this context
menuView.menuTable.addEventListener('click',function(e){
$.drawermenu.showhidemenu();
$.drawermenu.menuOpen = false; //update menuOpen status to prevent inconsistency.
if(e.rowData.id==="row1"){
if(activeView!=1){
$.drawermenu.drawermainview.remove(configView.getView());
activeView = 1;
} else {
activeView = 1;
}
}
if(e.rowData.id==="row2"){
if(activeView!=2){
$.drawermenu.drawermainview.add(configView.getView());
activeView = 2;
} else{
activeView = 2;
}
}
// on Android the event is received by the label, so watch out!
Ti.API.info(e.rowData.id);
});
$.index.open();
,451,515,
controls.js
var Alloy=require('alloy');
exports.getMainView=function(){
return Alloy.createController('mainview');;
};
exports.getMenuView=function(){
return Alloy.createController('menuview');
};
exports.getMenuButton=function(args){
var v=Ti.UI.createView({
height: args.h,
width: args.w,
backgroundColor: '#A1D0E0'
});
var b=Ti.UI.createView({
height: "20dp",
width: "20dp",
backgroundImage: "/106-sliders.png"
});
v.add(b);
return v;
};
//Get the Configuration Controller
exports.getConfigView=function(){
return Alloy.createController('config');
};
나는 설정 페이지 (두 번째 측면 패널 메뉴 옵션)뿐만 아니라 내가 문제의 원인이되어서는 안된다 생각하는 스타일 시트의 코드 블록을 제공하지 않았습니다.
나는 Titanium Studio Webview not letting me interact with website 을 보았지만 내 경우에는 도움이되지 않습니다. 이런 종류의 구현이 필요하고 확실히 해결 방법이 있어야한다고 생각합니다.
모든 종류의 도움이 매우 유용 할 것입니다. 감사.
나는 똑같은 문제에 직면하고 있었고 당신의 대답이 제게 많은 도움을주었습니다! 그것을 공유해 주셔서 감사합니다 =) –
큰 도움이 당신을 도왔습니다. @CarlosHenriqueLustosa – letsbondiway