Hi Alex,
the behavior is correct. Just in the moment when the first handler recognizes the gesture, the user interaction is handed over to the another touch handler willing to continue with it. From the first handler's point of view, the actual interaction is finished - thus this handler's OnRelease slot method is signaled. Since the second handler has taken over the interaction this handler's OnPress slot method is signaled.
Generally, the underlying framework guarantees for every OnPress signal that there is a corresponding OnRelease signal. This is very useful. For example, activating the first handler could result in the affected menu item being highlighted. When the user performs the up/down wipe gesture the interaction is handed over to another handler - the menu item should be de-highlighted now. The first handler expects thus a notification (OnRelease) in order to correctly de-highlight the menu item.
What you have to do is to evaluate in your OnRelease slot method the variable AutoDeflected of the first handler. If the variable is true, the signal has been generated because of the interaction being handed over to another handler. If the variable is false, the user has finished the interaction. Accordingly in the first case (true) you exit the slot method. In the second case (false) you perform the slot method as usual.
Please see also: Combine several Touch Handlers together.
Best regards
Paul Banach