为什么sencha UI后退按钮不能在“htc one”智能手机上运行?

时间:2013-12-11 11:35:44

标签: extjs sencha-touch sencha-architect

我开发了一个带有用户界面后退按钮的移动Android应用程序。这些按钮似乎适用于Samsung galaxy S4 smartphone但不适用于HTC One smartphone

我将sencha 2.3.0sencha arhitect 3.0一起使用。

1 个答案:

答案 0 :(得分:-1)

Sencha论坛中提到了这个特定的错误:

http://www.sencha.com/forum/showthread.php?273492-Back-button-broke-in-navigationview-Sencha-Touch-2.3-Android-4.3&p=1009111&viewfull=1#post1009111

对我有用的解决方案:

覆盖核心代码(class Ext.env.Feature)。

找到方法isStyleSupportedWithoutPrefix并将其替换为此 代码:

isStyleSupportedWithoutPrefix: function(name, tag) {
        var elementStyle = this.getTestElement(tag).style;
        if (typeof elementStyle[name] !== 'undefined' && typeof Ext.browser.getStylePrefix(name) === 'undefined') {
            return true;
        }

        return false;
    },

说明:它是webkit / chromium和Touch问题的混合体。首先,在某些情况下使用变换元素可以防止在此项目上触发触摸事件,但理论上Sencha Touch应该处理它。那为什么不呢? Android 4.3或4.2在本机浏览器中引入了非前缀转换属性。这就是问题发生的地方。 Touch仍会生成带前缀的值来为元素设置动画,但在动画对象中保留未加前缀的值。因此,最后,当触发转换时,触摸无法使用所有动画属性(并完成动画)清除,这会阻止触发内部事件动画。在这个事件中,Touch必须做一些肮脏的工作才能恢复命中检测。