Détecter touch sur un tabBarItem déjà  sélectionné

iPatxiPatx Membre
07:34 modifié dans API UIKit #1
Bonjour,

Je voudrais savoir s'il est possible de détecter un touch sur un onglet d'une tabBar alors qu'il est déjà  sélectionné ? Comment faut-il faire?

Merci

Réponses

  • apocaalypsoapocaalypso Membre
    07:34 modifié #2
    UITouch *touch = [[event allTouches] anyObject];<br />CGPoint location = [touch locationInView:self];<br />if(CGRectContainsPoint([monTabBarItem frame], location)<br />{<br />&nbsp; &nbsp;  // Detect<br />}<br />
    


    Voilà .
  • AliGatorAliGator Membre, Modérateur
    juin 2009 modifié #3
    Ouah, tu descend bien bas niveau appocalypso pour ce genre de truc... Pour des UIViews personnalisées, dont tu veux gérer toi-même la détection de clic, je dis pas (quoiqu'il est préférable d'utiliser pointInside:withEvent: dans ce genre de cas), mais pour un widget/contrôle tout fait comme une TabBar, je ne ferais ça que s'il n'y a pas d'autre solution (mais ça oblige à  sous-classer)...
    Mais surtout, UITabBarItem ne dérive pas de UIView... donc n'a pas de "frame" ! Donc tu ne peux pas tester ce genre de truc avec ton code !


    Et puis finalement il y a bien plus simple et surtout plus "Cocoa-style" : avec la methode de delegate [tt]- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController[/tt] (delegate de UITabBarController) : c'est pile fait pour ce que tu veux iPatx.

    Tu définis (dans la méthode viewDidLoad par exemple) disons ton UITabBarController (ou tout autre objet où tu veux pouvoir gérer ce code, ça dépend ce qui t'arrange le plus, mais bon le UITabBarController lui-même c'est bien souvent le plus pratique dans ce cas) comme étant delegate de... lui-même et il ne te reste plus qu'à  mettre le code que tu veux exécuter dans [tt]- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController[/tt]. En testant quel viewController est demandé pour savoir si c'est le même que l'actuel, ou un nouveau, si tu as besoin de différencier les cas.
    Bon ceci dit si tu tapes sur l'item de la TabBar qui est déjà  sélectionné, cette méthode n'est rappellée... que sous iPhone OS 3.0. Sous les versions antérieures d'après ce que dit la doc, si c'est déjà  l'onglet sélectionné que tu "tapes" la méthode ne sera pas appellée... Après je sais pas pour quelle cible tu codes.

    Sinon voir du côté du UITabBarDelegate directement (et non pas du UITabBarControllerDelegate), y'a sans doute de quoi s'en sortir aussi.
  • iPatxiPatx Membre
    07:34 modifié #4
    J'ai commencé à  chercher il y a quelques semaines comment faire et ... je n'y arrivais pas (avec du code comme celui de apocaalypso) car j'étais en 2.2.1 et la méthode didSelctViewController n'était pas rappelée.

    Je ne savais pas que le 3.0 rajouté cette fonctionnalité.

    Merci apocaalypso et AliGator !
Connectez-vous ou Inscrivez-vous pour répondre.