Hi I had a similar issue yesterday and was able to fix it myself. https://forum.lvgl.io/t/touch-doesnt-trigger-events/20822
In my case the display rotation I applied triggered a coordinate conversion during the processing of the touch position. I had to swap x and y and invert both to get LVGL to work as intended although the reported coordinates in the read_cb were matching LVGLs position coordinated of the button.
This issue on githup helped me a lot in understanding what might be the problem https://github.com/lvgl/lvgl/issues/7841
I see no display rotation in your code, but maybe it is a messed up coordinate system as well.