The OnBeginOverlap is working correctly, as the name says: it will fire when the overlapping begins. If the two objects stop overlapping the OnEndOverlap event will fire. That’s why i recommend using a boolean variable to store if the objects are still overlapping:
This is my basic setup:
And the blueprint:
Hope this helps you!