На iOS нажмите на кнопку TableViewRow, чтобы активировать событие на TableViewRow вместо своего дочернего элемента. Как это исправить?Ребенок TableViewRow запускает событие на TableViewRow вместо его дочернего iOS (Appcelerator Titanium)
У меня есть Tableview, который имеет нажмите событие, прикрепленную к нему и заполняется строками:
var tableView = Ti.UI.createTableView({
populateData: populateData
});
tableView.addEventListener('click', tableViewClick);
Ряды просты и добавлены имеют вид:
var row = Ti.UI.createTableViewRow({
type: 'row',
height: 70,
className: 'notes',
});
var container = Ti.UI.createView({
left: 15,
width: Ti.UI.SIZE,
touchEnabled: false,
});
var image = Ti.UI.createImageView({
image: '/images/usuwanie.png',
width: 35,
height: 35,
type: 'delete',
id: data.id,
searchType: data.type
});
container.add(image);
row.add(container);
Нажмите действие распознать, какой объект уволен событие:
var tableViewClick = function(e) {
var type = e.source.type;
var id = e.source.id;
var searchType = e.source.searchType;
var additionalText = e.source.additionalText;
alert(e.source.type);
switch(type) {
case 'delete':
deleteShopping(id,searchType);
break;
case 'edit':
editShopping(id, searchType, additionalText);
break;
}
};
Он отлично работает на Android - если я нажму на изображение, imageView является источником события (срабатывает предупреждение «delete» и «deleteShopping»).
В iOS источником всегда является строка (вместо ImageView), а предупреждение возвращает «строка», и никакая функция не вызывается.
Я не ожидал, что из-за, но если мы считаем, что слушатель должен быть присоединен к источнику постоянного, чем мы не должны добавить слушателя Tableview, если мы хотим иметь tableViewRow как источник. Этот подход поддерживается документацией как лучше и менее требовательной (один слушатель вместо одного для каждой строки). Я думал об изменении кода, как вы говорите, но у меня есть 2 изображения в строке, которые пользователь может щелкнуть. Если у меня есть 80 строк, то у меня есть 160 (sic!) Слушателей. Это не выглядит хорошо ... – kreatywny
К сожалению, ваш ответ неправильный или я пропустил вас. Если я добавлю eventListener к изображениям, то он будет переопределен слушателем, добавленным в строку. – kreatywny
ТаблицаView является исключением для большинства eventListeners в Titanium. Обычно вам нужно будет добавить слушателя непосредственно к объекту. –