-(void)tapAction:(UITapGestureRecognizer*)sender
{NSLog(@"touched");//Get the specific point that was touchedCGPoint point =[sender locationInView:self.view];}
ne fonctionne pas avec ios 11. Toutes les suggestions ?
Accepté la réponse est génial si vous avez besoin seulement de détecter les robinets. Si vous avez besoin de détecter toutes les touches, le meilleur moyen est de créer une nouvelle sous-classe UIView et placez-le sur la webview. Dans la sous-classe, vous pouvez détecter les touches à l'aide de hitTest:
TouchOverlay.h
@classTouchOverlay;@protocolTouchOverlayDelegate<NSObject>@optional-(void)touchOverlayTouched:(TV4TouchOverlay *)touchOverlay;@end@interfaceTouchOverlay:UIView@property(nonatomic, unsafe_unretained) id <TouchOverlayDelegate>delegate;@end
Touchoverlay.m
@implementationTouchOverlay-(id)initWithFrame:(CGRect)frame {self=[super initWithFrame:frame];returnself;}-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event{UIView*hitView =[super hitTest:point withEvent:event];if(hitView ==self){if(self.delegate&&[self.delegate respondsToSelector:@selector(touchOverlayTouched:)]){[self.delegate touchOverlayTouched:self];}returnnil;//Tell the OS to keep looking for a responder}return hitView;}@end
Remarque que l'on a accepté la réponse ci-dessus ne capture appuyez sur gestes (le toucher des roues et de retouche sans glisser entre les deux), et que les gestes de balayage sera ignoré.
Pour mes besoins, j'ai besoin d'être informé de tous les deux, et j'ai donc ajouté geste de balayage des modules de reconnaissance de façon appropriée. (À noter qu'en dépit d'être un champ de bits, vous ne pouvez pas OR ensemble geste de balayage des modules de reconnaissance' direction de la propriété, de sorte que 4 modules de reconnaissance de geste sont nécessaires pour détecter toute balayage).
//Note that despite being a bit field, you can't `OR` together swipe gesture//recognizers' `direction` property, so 4 gesture recognizers are required//to detect any swipefor(NSNumber* swipeDirection in@[@(UISwipeGestureRecognizerDirectionUp),@(UISwipeGestureRecognizerDirectionDown),@(UISwipeGestureRecognizerDirectionLeft),@(UISwipeGestureRecognizerDirectionRight)]){UISwipeGestureRecognizer* swipe =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(timerReset:)];
swipe.direction =[swipeDirection integerValue];
swipe.delegate=self;[rootWebView addGestureRecognizer:swipe];}
Edit: Ajoutant le commentaire ici pour plus de clarté-
Je crois alors il n'y a pas de propre manière de faire, vous pouvez soit remplacer le hittest withEvent méthode comme cette ou faire un hack comme ceci: primordial UIView
Je suis au courant de ça. Mais quand j'ai des sous classé uiwebview et mis en œuvre touchesBegan et touchesEnded, ils ne sont pas appelés à tous..... Dans ce cas, vous pouvez créer un transparent UIView sur la webview et de l'utilisation des touches de la méthode. Si je place transparent UIView sur elle, il va perdre des fonctionnalités par défaut de webview de cliquer sur des liens ou appuyez sur les touches etc..... suis-je le droit? Je crois alors il n'y a pas de propre manière de faire, vous pouvez soit remplacer le hittest withEvent méthode comme ceci iphonedevsdk.com/forum/iphone-sdk-development/... ou de faire un hack comme ceci github.com/psychs/iphone-samples/blob/... Merci, je vais sûrement avoir un coup d'oeil. Êtes-vous à partir de bangalore, en Inde? puis-je avoir les coordonnées de votre contact..... pour discuter plus
Voulez-vous dire que vous voulez remplacer les options que pop-up quand ils maintenez sur un lien? J'ai réussi à obtenir de travailler avec ce tutoriel/guide, mais celui affiché ici est encore un peu buggé et a besoin de vous pour faire quelques réglages: http://www.icab.de/blog/2010/07/11/customize-the-contextual-menu-of-uiwebview/
Pas de. J'ai un bouton de fermeture sur l'affichage web. lorsque l'utilisateur touche l'affichage web, j'ai envie de le cacher. quand on le touche à nouveau, il va montrer le bouton fermer de nouveau. mais je ne suis pas en mesure de détecter les touches sur l'affichage web. Vous pouvez modifier le tutoriel pour détecter le type de contact que vous souhaitez surveiller, plutôt que de le tapez et maintenez sur l'action, il est à la recherche dans l'exemple.
Utilisation UIGestureRecognizerDelegate méthode:
Ajouter UIGestureRecognizerDelegate dans un fichier de déclaration (c'est à dire votre .h fichier)
Étape 1: il suffit de régler le délégué de gestureRecognizer: (.m fichier viewDidLoad)
Étape 2: Remplacer cette fonction: (.m fichier)
Étape 3: mettre en œuvre l'tapAction fonction:
OriginalL'auteur Bhupendra
Accepté la réponse est génial si vous avez besoin seulement de détecter les robinets. Si vous avez besoin de détecter toutes les touches, le meilleur moyen est de créer une nouvelle sous-classe UIView et placez-le sur la webview. Dans la sous-classe, vous pouvez détecter les touches à l'aide de hitTest:
TouchOverlay.h
Touchoverlay.m
OriginalL'auteur emidander
Remarque que l'on a accepté la réponse ci-dessus ne capture appuyez sur gestes (le toucher des roues et de retouche sans glisser entre les deux), et que les gestes de balayage sera ignoré.
Pour mes besoins, j'ai besoin d'être informé de tous les deux, et j'ai donc ajouté geste de balayage des modules de reconnaissance de façon appropriée. (À noter qu'en dépit d'être un champ de bits, vous ne pouvez pas
OR
ensemble geste de balayage des modules de reconnaissance'direction
de la propriété, de sorte que 4 modules de reconnaissance de geste sont nécessaires pour détecter toute balayage).OriginalL'auteur dave
Tout ce qui hérite de UIResponder peut gérer touche (donc ne UIWebView). Lire la doc:
http://developer.apple.com/library/ios/#documentation/uikit/reference/UIResponder_Class/Reference/Reference.html
Vous aurez à utiliser:
Edit: Ajoutant le commentaire ici pour plus de clarté-
Je crois alors il n'y a pas de propre manière de faire, vous pouvez soit remplacer le hittest withEvent méthode comme cette ou faire un hack comme ceci: primordial UIView
Dans ce cas, vous pouvez créer un transparent UIView sur la webview et de l'utilisation des touches de la méthode.
Si je place transparent UIView sur elle, il va perdre des fonctionnalités par défaut de webview de cliquer sur des liens ou appuyez sur les touches etc..... suis-je le droit?
Je crois alors il n'y a pas de propre manière de faire, vous pouvez soit remplacer le hittest withEvent méthode comme ceci iphonedevsdk.com/forum/iphone-sdk-development/... ou de faire un hack comme ceci github.com/psychs/iphone-samples/blob/...
Merci, je vais sûrement avoir un coup d'oeil. Êtes-vous à partir de bangalore, en Inde? puis-je avoir les coordonnées de votre contact..... pour discuter plus
OriginalL'auteur Ankit
Voulez-vous dire que vous voulez remplacer les options que pop-up quand ils maintenez sur un lien? J'ai réussi à obtenir de travailler avec ce tutoriel/guide, mais celui affiché ici est encore un peu buggé et a besoin de vous pour faire quelques réglages:
http://www.icab.de/blog/2010/07/11/customize-the-contextual-menu-of-uiwebview/
Vous pouvez modifier le tutoriel pour détecter le type de contact que vous souhaitez surveiller, plutôt que de le tapez et maintenez sur l'action, il est à la recherche dans l'exemple.
OriginalL'auteur Kyle Howells