#toolbar #appcelerator
#панель инструментов #appcelerator
Вопрос:
У меня настроена панель инструментов клавиатуры с ПРЕДЫДУЩЕЙ и следующей кнопками. Я пытаюсь выяснить, какое текстовое поле имеет фокус, чтобы я мог разрешить пользователю перейти к следующему полю или вернуться к предыдущему полю. Мой код в настоящее время выглядит следующим образом:
//Setup keyboard toolbar.
var flexSpace = Titanium.UI.createButton({
systemButton:Titanium.UI.iPhone.SystemButton.FLEXIBLE_SPACE
});
var navButtons = Titanium.UI.createButtonBar({
labels:['Previous','Next'],
backgroundColor:'#336699',
top:100,
style:Titanium.UI.iPhone.SystemButtonStyle.BAR,
height:25,
width:'auto'
});
navButtons.addEventListener('click',function(e){
// Previous Button, index 0.
Titanium.API.info(e.index);
if (e.index == 0){
if (nameTxt.hasFocus == "nameTxt"){
phoneTxt.focus();
}
}
// Next Button, index 1.
if (e.index == 1){
if (nameTxt.hasFocus){
nameTxt.hasFocus = false;
phoneTxt.hasFocus = true;
}/*else{
done.fireEvent('click');
}*/
}
});
Я думаю, что я близок к тому, чтобы заставить это работать, поэтому просто нужен последний толчок. Любая помощь приветствуется.
С уважением, Стивен
Ответ №1:
вы могли бы просто настроить клавиатуру так, чтобы на ней была кнопка next?
это не решит проблему перехода вперед и назад, но это проще, чем решение ниже.
Сложный способ — отследить, какое поле имеет фокус в отдельном свойстве. Всякий раз, когда фокус меняется, обновляйте свойство до нового элемента, имеющего фокус
Ответ №2:
Вы пробовали использовать addEventListener с размытием и фокусом? https://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.TextField-object
Ответ №3:
Извлечено отсюда:
http://developer.appcelerator.com/question/120797/textfield—how-to-check-the-focus
function CreateTextField(options) {
var tf = Ti.UI.createTextField(options);
//define flag
tf.hasFocus = false;
tf.addEventListener('focus', function() {
this.hasFocus = true;
});
tf.addEventListener('blur', function() {
this.hasFocus = false;
});
return tf;
}
А затем просто вызовите CreateTextField, например:
email=CreateTextField({
width: 150,
left: 110,
height: 35,
hintText: 'login_email',
borderStyle:Titanium.UI.INPUT_BORDERSTYLE_NONE,
keyboardType : Titanium.UI.KEYBOARD_EMAIL,
keyboardToolbar : [navButtons, flexSpace, done],
color: '#949495'
})
После этого вы можете сделать:
Titanium.API.info(email.hasFocus);
if (e.index == 0){
if (email.hasFocus){
email.focus();
}
}
Надеюсь, это поможет вам!