cancelPreviousPerformRequestsWithTarget n'annulant pas un performSelector en attente: withDelay

Je suis à l'aide d'un UIWebView et ne veulent pas la barre de navigation à apparaître, à moins que l'utilisateur appuie n'importe où sur l'écran qui n'est pas un lien.
J'ai donc ce code pour afficher la barre de navigation après un délai:

- (void)handleTapGesture:(UITapGestureRecognizer *)sender  
{      
.... 
[self performSelector:@selector(showNavigationBar) withObject:self afterDelay:0.2]; 
}

Je ne suis pas d'appel showNavigationBar immédiatement lorsque le robinet gestionnaire est appelé, car l'utilisateur pourrait avoir tapé sur un lien dans lequel cas le robinet virage est appelé avant UIWebView shouldStartLoadWithRequestdonc si j'ai caché la barre de navigation dans shouldStartLoadWithRequest il clignote brièvement sur l'écran.
Donc à la place je l'ai mis à l'écran après un délai qui donne le temps pour le code suivant à exécuter dans shouldStartLoadWithRequest (et si l'utilisateur n'a pas de taper sur un lien shouldStartLoadWithRequest n'est pas appelé et la barre de navigation est affiché, comme il devrait être dans ce cas).

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  
{ 
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showNavigationBar) object:nil];
...

Toutefois, cela ne fonctionne pas, j'ai augmenté le temps de retard de plusieurs secondes et peut confirmer cancelPreviousPerformRequestWithTarget est appelé avant de la barre de navigation s'affiche, mais lorsque le temps spécifié est écoulé, la barre s'affiche. cancelPreviousPerformRequestWithTarget est ne pas avoir d'effet.

Quelqu'un sait pourquoi sa ne fonctionne pas?

source d'informationauteur Gruntcakes