【问题标题】:Titanium Click Propagation from Higher zIndex to LowerTitanium 点击传播从较高 zIndex 到较低
【发布时间】:2012-05-21 21:24:29
【问题描述】:

我将视图 (viewB) 放置在另一个视图 (viewA) 的顶部。下面viewA有两个按钮,btn1可以点击,btn2不能点击。理想情况下,我想将点击传播从 viewB 传递到 btn2。

我意识到问题在于 viewB 上的 zIndex 高于 viewA,这意味着 btn2 在技术上位于它后面,尽管按钮是完全可见的。

无论如何都要在不重组的情况下传递点击传播?

这是真实代码的一个非常简化的版本,简单地将 btn2 添加到 viewB 是不可能的,btn2 在真实代码中的确切位置是未知的,它是许多其他视图的子视图,它们都有自己的顶部和离开。

如果不可能的话,我同样有兴趣听到这个消息。谢谢。

为 iPhone/iPad 构建 Ti.SDK 2.0.2.v20120417133255 钛工作室 2.0.1 xCode 4.3.2

var w

in = Titanium.UI.createWindow({  
    backgroundColor:'#fff'
});

var viewA = Ti.UI.createView({
        backgroundColor: '#DDD',
});

var btn1 = Ti.UI.createButton({
        top: 50,
        title: 'Click 1',
        height: 50,
        width: 150,
        zIndex: 100,
});
btn1.addEventListener('click', function(){
        alert('click 1');
});
viewA.add(btn1);


var btn2 = Ti.UI.createButton({
        top: 150,
        title: 'Click 2',
        height: 50,
        width: 150,
        zIndex: 100,
});
btn2.addEventListener('click', function(){
        alert('click 2');
});
viewA.add(btn2);

var viewB = Ti.UI.createView({
        top: 120,
        zIndex: 20,
        borderWidth: 1,
        borderColor: '#0000FF',
        // backgroundColor: '#0000FF',
        // opacity: 0.5
});

win.add(viewA);
win.add(viewB);


win.open();
var win = Titanium.UI.createWindow({  
    backgroundColor:'#fff'
});

var viewA = Ti.UI.createView({
        backgroundColor: '#DDD',
});

var btn1 = Ti.UI.createButton({
        top: 50,
        title: 'Click 1',
        height: 50,
        width: 150,
        zIndex: 100,
});
btn1.addEventListener('click', function(){
        alert('click 1');
});
viewA.add(btn1);


var btn2 = Ti.UI.createButton({
        top: 150,
        title: 'Click 2',
        height: 50,
        width: 150,
        zIndex: 100,
});
btn2.addEventListener('click', function(){
        alert('click 2');
});
viewA.add(btn2);

var viewB = Ti.UI.createView({
        top: 120,
        zIndex: 20,
        borderWidth: 1,
        borderColor: '#0000FF',
        // backgroundColor: '#0000FF',
        // opacity: 0.5
});

win.add(viewA);
win.add(viewB);


win.open(
);

【问题讨论】:

    标签: iphone click titanium appcelerator propagation


    【解决方案1】:

    我敢肯定,在我回答这个问题并在我的应用中实施解决方案后,有人会以更好的方式回来!

    我研究了几种方法来解决这个问题,找到 btn2 的确切位置并将其添加到 view2,自动高度通常会导致问题,最终会在 +-20px 内。不够好。

    我采用的解决方案是通过从许多其他视图(topView、leftView、rightView 和 bottomView)创建 view2,在 view2 层打一个洞,然后这些将相互缓冲,留下一个洞btn2 所在的位置。该解决方案严重影响了可扩展性。添加btn3、btn4……创建view2所需的视图数量越来越多,布局也越来越困难。

    我知道此解决方案的缺点,仅建议将其作为一种选择,直到找到更好的解决方案。

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      相关资源
      最近更新 更多