Comment puis-je transférer un événement tactile pour le voir


0

J'ai une vue personnalisée qui couvre tout l'écran. Cette vue personnalisée a un UITapGestureRecognizer. Je veux que cette vue avale tous les événements tactiles SAUF pour une région spécifique à l'écran.

J'ai essayé d'utiliser ShouldReceiveTouch mais il ne fonctionne pas

UserInteractionEnabled = true; 
var gesture = new UITapGestureRecognizer(OnTouch); 
gesture.ShouldReceiveTouch += (recognizer, touch) => 
{ 
    var point = recognizer.LocationInView(null); 
    var res = ... // my condition to see if has or not to receive touch; 
    return res; 
}; 
AddGestureRecognizer(gesture); 

Comment puis-je avaler tous les événements tactiles, sauf ceux sur une zone spécifique où j'ai un bouton qui doit être cliqué? Mon problème est que je ne sais pas comment transférer l'événement. Je sais comment détecter si le point du contact correspond à la zone que je veux transférer l'événement tactile.

La solution peut être sur n'importe quelle langue disponible pour le développement iOS, mon code est sur C# depuis que j'utilise Xamarin mais ce n'est pas pertinent.

1

Remplacer cette méthode de UIView:

open func point(inside point: CGPoint, with event: UIEvent?) -> Bool 

vérifier si le point est dans une zone spécifique. Renvoyez true si c'est le cas, et et false si ce n'est pas le cas.

Vous pouvez trouver plus de détails ici: https://developer.apple.com/reference/uikit/uiview/1622469-hittest