2009-12-13 5 views
0

Je souhaite désactiver la sélection de texte sur un UITextView. Jusqu'à présent ce que je l'ai déjà fait est:Désactiver la sélection de texte UITextView

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    [UIMenuController sharedMenuController].menuVisible = NO; 
    if (action == @selector(paste:)) 
    return NO; 
    if (action == @selector(select:)) 
    return NO; 
    if (action == @selector(selectAll:)) 
    return NO; 
    return NO; 
} 

Dans cette suite, je mis UIMenuController à caché et je mettre un terme à la copie de texte, mais la sélection de texte est encore visible.

Les résultats de Google (également StackOverflow) ne m'amènent à aucune solution. Est-ce que quelqu'un a déjà fait face à la même problème? Des idées?

Répondre

2

Si vous souhaitez désactiver couper/copier/coller sur tousUITextView de votre application, vous pouvez utiliser une catégorie avec:

@implementation UITextView (DisableCopyPaste) 

- (BOOL)canBecomeFirstResponder 
{ 
    return NO; 
} 

@end 

Il enregistre un sous-classement ... :-)

Sinon, sous-classe UITextView et mettre:

- (BOOL)canBecomeFirstResponder 
{ 
    return NO; 
} 
+0

La question porte sur désactiver la sélection de texte sur un 'UITextView' et c'est ce que fait ce morceau de code ... –

+0

Cela désactivera également la saisie de texte bien sûr? Oui, juste testé. Cela désactive toute entrée de texte dans le champ de texte. – Fogmeister

-1
textView.editable = NO; 

ou

[textView setEnabled:NO]; 

je ne suis pas sûr de ce que u signifie

2

Si vous voulez éviter la sélection de texte, mais garder les interactions liens, ajouter les méthodes déléguées de TextView suivantes

- (void)textViewDidChangeSelection:(UITextView *)textView 
{ 
    [textView setSelectedRange:NSMakeRange(NSNotFound, 0)]; 
} 
+1

Cela va planter l'application s'il y a une tentative de retour arrière. – Manesh

Questions connexes