在iOS上单击TableViewRow,子菜单在TableViewRow上触发事件而不是其子项。如何解决?
我有一个tableView,它附加了一个click事件并且用行填充:
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,则imageView是事件的来源(警报返回'delete'并调用'deleteShopping'函数)。
在iOS上,源始终是行(而不是ImageView),警报返回'row',并且不调用任何函数。
答案 0 :(得分:1)
该错误实际上是在Android中。 iOS的行为符合预期。由于图像上没有事件监听器,因此不应该是源。事件正在冒泡到TableView,因为这是监听器附加的地方。
要修复它,您需要在每行的图像上添加一个eventListener。
答案 1 :(得分:0)
原因是父容器有“触摸启用”功能。属性设置为false。如果这样,孩子就不会开火。在Android上它会工作。在iOS上它不会。所以只需修改这样的代码:
$.ajax({
url: 'https://npiregistry.cms.hhs.gov/api/?number=1902072620',
dataType: 'JSONP',
jsonpCallback: 'callback',
type: 'GET',
success: function (data) {
console.log(data);
}
});