1

Я пытаюсь реализовать боковую панель с использованием Titanium, в которой у меня есть пара опций под меню боковой панели, и каждый пункт меню загружает другой вид. Один из вариантов загружает веб-просмотр. Веб-сайт или html отлично загружаются в компонент webview, но я не могу взаимодействовать с ним; в том смысле, что я не могу нажимать на ссылки или делать что-либо как таковое. Это происходит как с локальным, так и с удаленным html.Titanium SDK компонент webview не позволяет взаимодействовать с веб-сайтом, который он загружает

Для боковой панели, я интегрирование ящика виджета предоставленного Ricardo Alcocer, ссылки на свой проект GitHub это - 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> 

(опция Side меню для загрузки WebView) 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(); 

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

ОК Ребята. У меня есть ответ на мой вопрос. Мне просто нужно было установить свойство willHandleTouches моего webview в false в моем tss-файле. Не знал, что это было так просто. :)

+0

Я столкнулся с той же проблемой, и ваш ответ мне очень помог! Спасибо, что поделились ею =) –

+1

Замечательно, что это вам помогло. @CarlosHenriqueLustosa – letsbondiway

Смежные вопросы