Estoy usando un UIWebView
y no quiero que la barra de navegación aparezca a menos que el usuario toque en cualquier parte de la pantalla que no sea un enlace. así que tengo el código para mostrar la barra de navegación después de una demora:cancelPreviousPerformRequestsWithTarget no cancela un destacado performSelector: withDelay
- (void)handleTapGesture:(UITapGestureRecognizer *)sender
{
....
[self performSelector:@selector(showNavigationBar) withObject:self afterDelay:0.2];
}
no estoy llamando showNavigationBar
inmediatamente cuando el manejador del grifo se invoca porque el usuario podría haber pulsado sobre un enlace en cuyo caso el lanzador del grifo se llama antesUIWebView
shouldStartLoadWithRequest
, así que si me escondí en la barra de navegación shouldStartLoadWithRequest
sería parpadear momentáneamente en la pantalla. Así que en lugar lo fijo para mostrar después de un retraso que le da tiempo para el siguiente código para ejecutar dentro de shouldStartLoadWithRequest
(y si el usuario no pulse sobre un enlace shouldStartLoadWithRequest
no se llama y la barra de navegación en la pantalla, como debe ser en ese caso).
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showNavigationBar) object:nil];
...
Sin embargo, esto no funciona, he aumentado el tiempo de retardo de varios segundos y puedo confirmar cancelPreviousPerformRequestWithTarget
está recibiendo llamadas antes de que se haya mostrado la barra de navegación, pero cuando el tiempo especificado transcurre la barra de pantallas. cancelPreviousPerformRequestWithTarget
está teniendo ningún efecto.
¿Alguien sabe por qué no su trabajo?
Voy a dar que un intento. ¿Existe una variante de cancelación que funcione para todos los bucles de ejecución? Intenté esto pero tampoco funciona: [[NSRunLoop mainRunLoop] cancelPerformSelector: @selector (showNavigationBar) target: self argument: nil]; – Gruntcakes
@Piepants No lo creo, pero eso no significa que no exista. –
¡Tenía el mismo problema y el marcar es el camino a seguir! – durazno