Czy istnieje sposób, aby ustawić kursor na początku UITextField?Przenoszenie kursora na początek UITextField
Po wyświetleniu kontrolki z zawartością kursor jest umieszczany na końcu łańcucha. Chciałbym przenieść to na początek.
Czy istnieje sposób, aby ustawić kursor na początku UITextField?Przenoszenie kursora na początek UITextField
Po wyświetleniu kontrolki z zawartością kursor jest umieszczany na końcu łańcucha. Chciałbym przenieść to na początek.
Walczysz z systemem na tym. UITextField
nie ma żadnych publicznych właściwości do ustawienia pozycji kursora (co faktycznie koreluje z początkiem bieżącego zaznaczenia). Jeśli zamiast tego można użyć wartości UITextView
, następujące metody delegatów wymuszą przesunięcie kursora na początek tekstu. Pamiętaj, że użytkownicy nie oczekują takiego zachowania i powinieneś dokładnie sprawdzić swoje motywy, aby tego dokonać.
- (void)textViewDidBeginEditing:(UITextView *)textView {
shouldMoveCursor = YES;
}
- (void)textViewDidChangeSelection:(UITextView *)textView {
if(shouldMoveCursor)
{
NSRange beginningRange = NSMakeRange(0, 0);
NSRange currentRange = [textView selectedRange];
if(!NSEqualRanges(beginningRange, currentRange))
[textView setSelectedRange:beginningRange];
shouldMoveCursor = NO;
}
}
Gdzie shouldMoveCursor
jest BOOL
zmienna utrzymać w kontrolerze.
UITextField
jest zgodny z protokołem UITextInput
, który zapewnia metody pozwalające kontrolować wybrany zakres. Działa to w moich testów:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
textField.selectedTextRange = [textField
textRangeFromPosition:textField.beginningOfDocument
toPosition:textField.beginningOfDocument];
}
To rozwiązanie działa świetnie! Upewnij się, że zgadzasz się z protokołem delegowania UITextField. :) –
działa na mnie
// Get current selected range , this example assumes is an insertion point or empty selection
UITextRange *selectedRange = [textField selectedTextRange];
// Calculate the new position, - for left and + for right
UITextPosition *newPosition = [textField positionFromPosition:selectedRange.start offset:3];
// Construct a new range using the object that adopts the UITextInput, our textfield
UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:newPosition];
// Set new range
[textField setSelectedTextRange:newRange];
Hey warrenm, thaks kumpla. Ten kod to po prostu niesamowity człowiek. Czapki z głów dla ciebie. – anshul