2015-04-15 3 views
1

J'implémente un menu personnalisé lorsque j'appuie longuement sur un lien dans UIWebView.UIWebView menu UIActionSheet personnalisé lorsque vous appuyez longuement sur un lien

Pour éviter le menu par défaut iOS, j'utilise:

-webkit-touch-callout:'none' 

Tout fonctionne bien dans iOS 6, 7: mon menu personnalisé est affiché au lieu de défaut UIWebView. Mais dans iOS 8, un comportement étrange se produit.

Dans iOS 8, une fois mon propre menu affiché, je relâche le contact et le lien est en cours de chargement dans UIWebView.

I sous-classe UIWindow, substituez sendEvent: et voir les différents:

  • Dans iOS 6, 7: après mon propre menu affiché, un touchcancel a été envoyé.

  • Dans iOS 8: rien ne se passe. Mais quand j'ai relâché le toucher, une touche a été envoyée et un clic sur le lien a été déclenché.

J'ai essayé triggercancel de javascript quand mon menu est commencé montré, mais pas de chance.

Y a-t-il une solution de contournement pour cette situation?

+0

essayez ceci: https://github.com/theniceboy/HoldToSaveImage – David

+0

David, j'ai essayé votre projet et longtemps appuyé sur le sac à dos jaune comme indiqué sur le readme, mais je n'ai pas eu de chance de voir le message d'alerte personnalisé. –

Répondre

1

Pour ceux qui pourraient être concernés à l'avenir, je réussi à surmonter cette situation par un hack délicat:

CGPoint currentOffset = webview.scrollView.contentOffset; 
[webview.scrollView setContentOffset:CGPointMake(currentOffset.x, currentOffset.y +1) animated:NO]; 
[webview.scrollView setContentOffset:currentOffset animated:NO]; 
+0

Parmi les nombreuses approches disponibles pour éviter que le robinet ne se produise lors du remplacement du geste d'appui long, c'est le seul qui fonctionne. – jasonjwwilliams