7
votes

Comment intercepter votre appui long sur UITEXTVIEW?

NOOB Total Objective-C / Cocoa Touch ici, méfiez-vous.

J'essaie d'intercepter lorsqu'un utilisateur intercepte longtemps sur une vue UitextView (une loupe apparaît alors avec le positionneur de carbone), puis libère la touche, c'est-à-dire lorsque normalement, les options "Sélectionner" et "Tout sélectionner" apparaissent, après que la loupe. Je veux remplacer cela par ma propre action personnalisée qui est exécutée.

est-ce possible?


0 commentaires

3 Réponses :


15
votes

Vous pouvez essayer quelque chose comme ceci:

Désactiver la reconnaissance de presse longue intégrée P>

UILongPressGestureRecognizer *myLongPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:<your target> action:@selector(<your custom handler>)]; 
[textView addGestureRecognizer:myLongPressRecognizer];
[myLongPressRecognizer release];


4 commentaires

Cela a l'air bien ... mais y a-t-il un moyen de garder la loupe? Ce que je suis principalement intéressé, c'est la libération du long pressage après la loupe


Hmm, n'ai pas essayé cela auparavant. Vous pouvez essayer de remplacer la méthode qui gère la loupe pour ajouter votre manipulation quand il se termine, mais c'est probablement une méthode privée, de sorte que cela ne fonctionne pas bien avec l'équipe d'évaluation d'Apple. L'autre moyen est de ré-implémenter la loupe vous-même.


J'aime la pensée ici, mais malheureusement, cette approche ne fonctionne pas. Peut-être une sous-Sous-Sous-Sous-Sous-Sous-à-Sterre inside Inside UitextView qui obtient le reconnaissance?


Je suppose que vous pouvez essayer de rechercher cette sous-visVIEW. Vous pouvez les boucler en utilisant '[Sous-système TextViews]'. Je ne peux pas donner de garanties cependant.



2
votes

Version SWIFT du code de @ Altealice Pour désactiver la reconnaissance de presse longue intégrée:

if let actualRecognizers = self.sourcesTextView.gestureRecognizers {
    for recognizer in actualRecognizers {
        if recognizer.isKindOfClass(UILongPressGestureRecognizer) {
            recognizer.enabled = false
        }
    }
}


0 commentaires

0
votes

Si vous supprimez le [LongressSeuture SetMinimalCompressduration: 2.0]; Code> Il fonctionnera .. Etant donné que le geste de l'onglet sera appelé pour commencer à modifier le champ de texte ... ou simplement implémenter cette fonction de déléguée gestuelle

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}


0 commentaires