Czy istnieje sposób, aby uniemożliwić użytkownikowi przesunięcie kursora w UITextField? Chciałbym, żeby pozostał na końcu struny.Wyłączyć Lupę w UITextField
Odpowiedz
Nie można uniemożliwić przesuwania kursora. Można jednak zapobiec ich edycji tekstu z wyjątkiem na końcu poprzez wdrożenie metody w delegata pole tekstowe za
– textField:shouldChangeCharactersInRange:replacementString:
.
Edytuj: można również ustawić userInteractionEnabled
na NO
, aby użytkownik nie mógł dotknąć pola. Zadzwoń pod becomeFirstResponder
ręcznie, aby pole zostało skupione, ponieważ użytkownik nie może dotknąć, aby ustawić ostrość.
Nie wiem, czy jest na to wbudowany sposób ... może mógłbyś podklasować UITextField i sam poradzić sobie z wydarzeniami dotykowymi?
nie mam sprawdzić, czy można wyłączyć lupę, ale zalecany sposób selektywnie wyłączyć zachowanie edycji w UIResponder (a zatem UITextField) jest wdrożenie canPerformAction:withSender
z UIResponder
.
Zobacz UIResponder documentation.
Może, jeśli zwrócisz "NIE" dla zaznaczenia i wybierz Wszystkie czynności, możesz je wyłączyć.
Innym, bardziej brutalnym sposobem jest przechwycenie dowolnego zdarzenia dotykowego i zresetowanie kursora do końca.
Polecam sprawdzić właściwość gestRecognizers.
Znajdziesz ich wiele w tablicy i możesz albo usunąć je wszystkie, albo znaleźć te, które wyzwalają zdarzenie, które chcesz przechwycić i usunąć/zastąpić.
użyłem go usunąć kopiuj/wklej i powiększaniu funkcjonalności szklane z UITextField
Xcode mówi mi, że UITextField "nie ma kolekcji outlet" dla rozpoznawania gestów. – radven
jest to stara sprawa, ale szukałem odpowiedzi na to samo pytanie i znaleźć rozwiązanie.
W rzeczywistości bardzo proste jest uniemożliwienie użytkownikowi przesunięcia kursora. Wystarczy podklasę UITextField i podać następujące realizację caretRectForPosition:
- (CGRect)caretRectForPosition:(UITextPosition *)position
{
return [super caretRectForPosition:self.endOfDocument];
}
Chciałbym tylko dodać, że chociaż to rzeczywiście uniemożliwia poruszanie się karetki, to jednak nie wyłącza szkła powiększającego (przynajmniej nie w systemie iOS 7). Tytuł i pytanie wymagają różnych rzeczy. – iMaddin
NO PODKLASA potrzebne.
Możesz użyć UITextFieldDelegate
. Spowoduje to wyłączenie wyboru tekstu powiększającego.
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
textField.userInteractionEnabled = NO;
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
textField.userInteractionEnabled = YES;
}
NB: To tylko obejście.
- 1. Jak całkowicie wyłączyć lupę dla UIWebView iOS9
- 2. UITextField jak wyłączyć wklejanie?
- 3. Jak wyłączyć i ukryć UITextField
- 4. Wyłączanie "Definiuj" w UITextField
- 5. Łatwy sposób na wyłączenie UITextField?
- 6. Wyłączanie autokorekcji dla UITextField w całej aplikacji
- 7. Przykład UITextField w Cocos2d
- 8. wcięcia w UITextField
- 9. UITextField setVisible?
- 10. Wykryj zdarzenie Backspace w UITextField
- 11. Przeniesienie kursora programowego w UiTextField
- 12. Jak utworzyć wielowierszowy UITextfield?
- 13. Klawiatura UITableViewController i UITextField
- 14. Dodaj etykietę do UITextField
- 15. UITextField wiele linii
- 16. UITextField stracić fokus zdarzenia
- 17. UITextField vs UISearchBar?
- 18. UITextField rightViewMode dziwne zachowanie
- 19. Jak ukryć granicę UITextField?
- 20. UITextField ukryj wszystkie znaki
- 21. Pozycja rightView UITextField
- 22. Jak wybrać UITextField?
- 23. UITextField rightView „WhileEditing” problem
- 24. Wyłączenie dotknięć, ale nie wszystkich interakcji użytkownika w UITextField
- 25. Wykrywanie zmiany w tekście w UITextfield
- 26. UITextField clearButtonMode color
- 27. Zakazuje hasła UITextField
- 28. Tekst zamazany przez UITextField
- 29. dodaj przycisk do uitextfield
- 30. UITextField animować szerokość ograniczenie
To jest to, co mam teraz, ale jest trochę niewygodny dla użytkownika, gdy przesuwają kursor, a następnie wpisz klucz, a znaki dołączają do końca ciągu. Nie idealne ... ale nie śmiertelne. Poszukuje łatwego sposobu na wyłączenie dotknięć na UITextField. Może pójść na podklasę trasy, jeśli to moja jedyna opcja. – Meltemi
Czy mogę zapytać, co próbujesz osiągnąć? Dlaczego nie pozwolić na umieszczenie kursora? Ale tak, wydaje się, że po prostu ustawienie userInteractionEnabled = NO byłoby najlepszą poprawką. –