2009-05-25 7 views
2

J'ai un UITableview que je voudrais faire défiler vers le haut lorsque la barre d'état est touchée.Comment détecter un contact dans la barre d'état de l'iPhone?

Je m'attendais à trouver une notification que je pourrais écouter puis utiliser tableview: scrollToRowAtIndexPath: pour le défilement, mais ne peut en trouver aucun.

Existe-t-il un moyen de le faire?

[Mise à jour]

Trouver un peu plus sur le net, je me méfie que ce simulateur me mordre. Mon UIScrollView ne parvient pas à défiler vers le haut dans le simulateur, mais je n'ai pas essayé sur le matériel. En outre, j'ai un UIScrollView, mais aussi UITextView, donc je me demande si c'est le manger.

Je vais voir ce que je peux faire avec scrollsToTop.

+0

scrollsToTop fait l'affaire. Plus tard, il a cessé de fonctionner car j'avais ajouté d'autres UITextViews au projet. Il était nécessaire de désactiver explicitement scrollsToTop sur chacun dans le code. –

Répondre

4

This article sur cocoawithlove.com est exactement ce que vous voulez.

de cet article.

« La partie la plus délicate de l'exemple d'application est la détection d'une touche dans la barre d'état

En mettant en œuvre une coutume setContentOffset: animé: méthode sur un UITableView et définissant un point d'arrêt dans cette méthode, vous pouvez voir dans la pile de débogueur que la méthode UIApplication sendEvent: est appelée pour l'état r touche, alors c'est où nous allons commencer. "

+1

Ne fonctionne plus. –

+0

@ Max Seelemann - Dommage. :( – Kriem

1

Cela devrait se faire automatiquement, sauf si vous définissez la propriété scrollsToTop sur NO.

+0

Vrai, mais il ne peut y avoir qu'un seul scrollView avec scrollsToTop défini sur YES.Couper une touche pour faire d'autres choses fantaisistes en plus du scrollView défiler vers le haut n'est pas possible de cette façon. : OUI est la solution la plus simple. :) – Kriem

+0

Bon point.Dans la question initiale, il ne semblait pas que vous deviez faire quelque chose de fantaisie. –

0

Cela peut être une surcharge excessive, mais vous pouvez écrire votre propre barre d'état.

Vous pouvez masquer la barre d'état actuelle en définissant la "Barre d'état est initialement masquée" sur OUI dans votre application. Créez ensuite votre propre vue de barre d'état personnalisée en haut de la vue avec une hauteur 20px qui est soit un UIButton soit simplement un UIView avec un UITapGestureRecognizer.

Vous pouvez détecter le niveau/état de la batterie (charge et branché ou non) avec:

UIDevice *myDevice = [UIDevice currentDevice]; 
[myDevice setBatteryMonitoringEnabled:YES]; 

float batteryLevel = [myDevice batteryLevel]; 
UIDeviceBatteryState batteryState = [myDevice batteryState]; 

Vous pouvez obtenir le temps avec [date NSDate]; (alors utilisez NSDateFormatter pour formater).

La puissance du signal est a little iffy mais peut être grossièrement estimée avec un certain degré d'ingéniosité.

Questions connexes