Vous allez devoir faire un peu de détournement d'avion. Je ne sais même pas si c'est possible. On dirait qu'il répond probablement à un événement gestuel appelé UILongPressGestureRecognizer.
Vous devez savoir quelle vue a été ajoutée à ce geste. quelque chose comme ça.
NSArray *gestures = myWebView.gestureRecognizers;
for(int i=0;i<[gestures count];i++){
UIGestureRecognizer g = [gestures objectAtIndex:i];
if([g isKindOfClass:UILongPressGestureRecognizer.Class]){
[myWebView removeGestureRecognizer:g];
break;
}
}
mais je ne pense pas que le geste se trouve directement sur l'UIWebview. C'est sur l'une de ses sous-vues.
Il est peut-être sur cette sous-vue
UIScrollView *sview = [[mywebview subviews] objectAtIndex:0];
Si pas sur celui-là alors il est probablement le point de vue qui est sur le dessus le plus, ce qui est ce que je pense. C'est un type View non documenté, mais si vous le traitez comme un UIView pour les méthodes que nous appelons, il est probablement sûr. Aussi, parce que vous le traitez comme un UIView, ce n'est pas contre les règles autant que je comprends.
UIScrollView *sview = [[mywebview subviews] objectAtIndex:0];
UIView *realWebView = [[sview subviews] objectAtIndex:10];
La raison pour laquelle je n'ai pas écrit l'extrait (qui est non testé) pour essayer d'enlever le geste de tous les points de vue est parce qu'il est important que vous sachiez quelle vue vous le retirez. Une fois que vous l'avez supprimé, vous devez écrire votre propre UILongPressGestureRecognizer, puis ajouter le nouveau dans la vue correspondante (la vue à partir de laquelle il a été supprimé).
Vous avez perdu toutes vos fonctionnalités de copie sélectionnez etc ... mais maintenant vous pouvez implémenter votre propre.
Si vous voulez certaines des anciennes fonctionnalités, je pense que je sais comment vous pouvez le récupérer, mais Je ne peux pas promettre que cela est autorisé ou sûr.
Avant de supprimer le geste, vous devez remplacer une méthode par UIView. Vous devriez être en mesure de le faire dans votre fichier de classe de travail en cours (en haut du fichier)
@implementation UIView (extended)
-(BOOL) respondsToSelector:(SEL)aSelector {
printf("SELECTOR: %s\n",
[NSStringFromSelector(aSelector) UTF8String]);
return [super respondsToSelector:aSelector];
}
@end
Je ne peux rien promettre, mais cela ne devrait enregistrer le nom de chaque méthode qui est appelée à votre avis .
Exécutez votre application et exécutez la copie, coller, sélectionner, sélectionner toutes les méthodes. Votre journal devrait montrer quelles méthodes sont appelées lorsque vous appuyez sur les boutons. Il peut montrer plusieurs méthodes lorsque vous appuyez sur un bouton, vous voulez probablement juste le premier. Maintenant, lorsque vous créez un menuItem, vous savez quel sélecteur lui affecter.
Tout cela n'est qu'une supposition. J'espère que cela aide.
Je crois que cela pourrait être fait dans canPerformAction. Mais je ne sais vraiment pas comment supprimer l'élément de menu COPY. – Zaldy
Salut, pouvez-vous me dire comment supprimer l'autre élément de menu dans UIMenuController? Je veux supprimer l'élément de la flèche –
@Risma - Vous avez une chance d'essayer de supprimer l'élément de la flèche et de placer tous les menus disponibles dans le cadre principal lui-même? –