Domanda

C'è un modo per impedire all'utente di spostare il cursore in un'UITextField? Mi piacerebbe che rimanga alla fine della stringa.

È stato utile?

Soluzione

Non c'è alcun modo per impedire loro di spostare il cursore. È possibile, tuttavia, impedire loro di modifica del testo tranne che alla fine implementando la

– textField:shouldChangeCharactersInRange:replacementString:

metodo nella delegato del campo di testo.

Edit: è anche possibile impostare userInteractionEnabled a NO in modo che l'utente non può toccare il campo. Chiama becomeFirstResponder manualmente in modo che il campo viene messa a fuoco in quanto l'utente non può toccare a fuoco.

Altri suggerimenti

Questa è una vecchia questione, ma mi era alla ricerca di una risposta alla stessa domanda, e ha trovato una soluzione.

In realtà è abbastanza semplice per impedire all'utente di spostare il cursore. Basta sottoclasse UITextField e fornire la seguente implementazione di caretRectForPosition:

- (CGRect)caretRectForPosition:(UITextPosition *)position
{
    return [super caretRectForPosition:self.endOfDocument];
}

NO SUBCLASS necessario .

Si potrebbe utilizzare UITextFieldDelegate. Si farà disabilitare ingrandimento selezione di vetro e di testo.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    textField.userInteractionEnabled = NO;
    return YES;
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    textField.userInteractionEnabled = YES;
}

. NB: Questo è solo un bypass

Io suggerirei di controllare i gestureRecognizers Proprietà.

Troverete un sacco di loro nella matrice e potrebbe desiderare di rimuovere tutti o per trovare quelli che attiva l'evento che si desidera intercettare e rimuovere / sostituirlo.

L'ho usato per rimuovere copia / incolla e ingrandimento funzionalità di vetro da un UITextField

Non controllare se è possibile disattivare la lente, ma il metodo consigliato per disabilitare selettivamente comportamento modifica in un UIResponder (e quindi un'UITextField) hanno è quello di attuare canPerformAction:withSender di UIResponder.

Vedere documentazione UIResponder

Forse se si torna "NO" per l'azione di selezione e selectAll è possibile disattivarla.

Un altro, più brutale, modo è quello di intercettare qualsiasi evento di tocco e ripristinare il cursore alla fine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top