我正在开发 Titanium 移动应用程序,但在使用 backgroundRadient 时出现按钮聚焦问题。
我使用 touchstart 事件取得了成功(changeBackgroundGradient 很简单,可以避免在此处显示):
authButton.addEventListener('touchstart', function(e) {
changeBackgroundGradient(authButton);
});
但是 touchend 事件不是我想要的。它仅在用户结束对元素的触摸时触发(表现为单击事件)。Touchmove 也不是我想要的,因为它会在用户移动时触发。
authButton.addEventListener('touchmove', function(e) {
revertBackgroundGradient(authButton);
});
我想要的是:只要用户触摸按钮,按钮就会成为焦点。诸如“ontap”和“onrelease”之类的东西。我知道有 backgroundFocusedColor 和 backgroundFocusedImage,但没有 backgroundFocusedGradient。
使用 backgroundGradient 属性时如何处理按钮焦点? 我想要默认行为,但它似乎在我使用 backgroundGradient 属性后立即停止。
谢谢。
- 编辑:
这是完整的代码:
// Authenticate Button
var authButton = Ti.UI.createButton({
width : '50%',
height : '60',
top : '15',
bottom : '15',
title : L('LoginView_authButton'),
font: {
fontSize: 20,
fontFamily: 'TrebuchetMS-Bold'
},
color : '#FFFFFF',
textAlign : 'center',
borderColor : '#3D86A9',
borderWidth : '2',
borderRadius : '5',
backgroundGradient : {
type : 'linear',
startPoint : {
x : '0%',
y : '0%'
},
endPoint : {
x : '0%',
y : '100%'
},
colors : [{
color : '#a2d6eb',
offset : 0.0
}, {
color : '#67afcf',
offset : 0.5
}, {
color : '#3591bc',
offset : 0.5
}, {
color : '#1e83b1',
offset : 1.0
},
]
}
});
authButton.addEventListener('touchstart', function(e) {
changeBackgroundGradient(authButton);
});
authButton.addEventListener('touchend', function(e) {
revertBackgroundGradient(authButton);
});
function changeBackgroundGradient(AuthButton)
{
AuthButton.backgroundGradient = {
type : 'linear',
startPoint : {
x : '0%',
y : '0%'
},
endPoint : {
x : '0%',
y : '100%'
},
colors : [{
color : '#f5bd8b',
offset : 0.0
}, {
color : '#e59a57',
offset : 0.5
}, {
color : '#da7a23',
offset : 0.5
}, {
color : '#c35211',
offset : 1.0
},
]
};
}
function revertBackgroundGradient(AuthButton)
{
AuthButton.backgroundGradient = {
type : 'linear',
startPoint : {
x : '0%',
y : '0%'
},
endPoint : {
x : '0%',
y : '100%'
},
colors : [{
color : '#9FD3E9',
offset : 0.0
}, {
color : '#63AAC9',
offset : 0.5
}, {
color : '#348BB8',
offset : 0.5
}, {
color : '#2081B2',
offset : 1.0
},
]
};
}