tidev/titanium-sdk

TableView: contentOffset improvements

Opened this issue · 0 comments

m1ga commented

I have searched and made sure there are no existing issues for the issue I am filing

  • I have searched the existing issues

Description

The TableView contentOffset value is different on Android/iOS:

Android:
There are getters table.contentOffset.x and table.contentOffset.y but the value is returning a native height value (you have to divide it by ldi). The value in the scroll event is already in local space

iOS:
The getter is 0 and it only has the scroll event values.

Expected Behavior

Getter should be available on both platforms and it should return the same value as the scroll event contentOffset.

Actual behavior

Reproducible sample

var ldi = Ti.Platform.displayCaps.logicalDensityFactor;

var win = Ti.UI.createWindow();
var btn = Ti.UI.createButton({
	title: "click"
})
var tableData = [];
for (var i = 0; i < 100; ++i) {
	tableData.push({
		title: "Test" + i
	})
}

var table = Ti.UI.createTableView({
	data: tableData
});
win.add(table);
win.add(btn);
btn.addEventListener("click", function() {
	console.log("Current: " + table.contentOffset.x + " - " +table.contentOffset.y, "Fixed: " + Math.round(table.contentOffset.y/ldi));
})
table.addEventListener("scroll", function(e) {
	console.log(e.contentOffset.x, e.contentOffset.y);
})
win.open();

Steps to reproduce

Run the app, scroll the table and click the button. The normal contentOffset.y value should be the same in both cases.

Platform

Android & iOS

SDK version you are using

12.4.0

Alloy version you are using

No response