Tappable
Interaction
Engine\Native\Tappable est la brique de base de toute interaction tactile dans l'arbre de rendu natif : le moteur de layout n'a pas de DOM vivant sur lequel attacher un onclick, donc une zone tappable doit être enregistrée explicitement au moment du paint(), dans le même espace de pixels absolus que les commandes de dessin. NativeCanvasView.kt teste les coordonnées brutes du toucher contre ces rectangles ; un hit renvoie la chaîne $action à PHP par HTTP, le même schéma d'aller-retour que phpxNav.submitAction() côté HTML, sans DOM à re-rendre — c'est toute la liste de commandes de dessin qui revient à la place.
Exemple
<?php
use Engine\Native\Tappable;
use Engine\Native\Container;
use Engine\Native\Icon;
$favoriteZone = new Tappable(
child: new Container(new Icon('favorite', 22.0), width: 44.0, height: 44.0),
action: 'submit:toggle-favorite',
meta: ['label' => 'Ajouter aux favoris'],
);Une icône cœur de 44×44 points devient tappable ; meta.label fournit une description accessible puisqu'il n'y a aucun texte visible à proximité pour la déduire.
Constructeur
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
| child | Widget | — | Le nœud enfant rendu à l'intérieur de la zone tappable. |
| action | string | — | Chaîne d'action renvoyée à PHP quand la zone est touchée. |
| meta | ?array<string, mixed> | null | Données supplémentaires (options d'un select, message d'un dialogue, ou 'label' pour l'accessibilité). |
À savoir.
rebuildAccessibilityNodes()déduit automatiquement une description TalkBack à partir des commandes de texte voisines pour la plupart des widgets, mais une zone tappable purement iconographique (unTappablebrut autour d'une icône) n'a rien à en déduire sans unmeta['label']explicite.