1

티타늄을 사용하여 사이드 패널을 구현하려고합니다. 사이드 패널 메뉴에 몇 가지 옵션이 있으며 각 메뉴 옵션마다 다른보기가로드됩니다. 옵션 중 하나가 웹보기를로드합니다. 웹 사이트 또는 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 을 보았지만 내 경우에는 도움이되지 않습니다. 이런 종류의 구현이 필요하고 확실히 해결 방법이 있어야한다고 생각합니다.

모든 종류의 도움이 매우 유용 할 것입니다. 감사.

답변

1

Ok 얘들 아. 나는 내 자신의 질문에 대한 대답을 가지고있다. 난 그냥 내 webview의 'willHandleTouches'속성을 내 tss 파일에 false로 설정해야했습니다. 결국 이것이 너무 단순하다는 것을 몰랐습니다. :)

+0

나는 똑같은 문제에 직면하고 있었고 당신의 대답이 제게 많은 도움을주었습니다! 그것을 공유해 주셔서 감사합니다 =) –

+1

큰 도움이 당신을 도왔습니다. @CarlosHenriqueLustosa – letsbondiway