Korzystam z UITextfied
kliknięcia wyświetlanej klawiatury tekstowej, ale po naciśnięciu returnklawisza klawiatura nie znika. Użyłem następującego kodu:
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
return true;
}
metoda resignfirstresponder nie wchodzi w funkcję.
ios
swift
uitextfield
Ashwinkumar Mangrulkar
źródło
źródło
Odpowiedzi:
Możesz sprawić, że aplikacja zwolni klawiaturę, korzystając z następującej funkcji
Oto pełny przykład, aby lepiej to zilustrować:
Źródło kodu: http://www.snip2code.com/Snippet/85930/swift-delegate-sample
źródło
UITextFieldDelegate
!func textFieldShouldReturn(textField: UITextField) -> Bool {
zmień nafunc textFieldShouldReturn(_ textField: UITextField) -> Bool {
return true
Część to tylko mówi pole tekstowe czy nie jest dozwolone, aby powrócić.Musisz ręcznie powiedzieć polu tekstowemu, aby odrzuciło klawiaturę (lub cokolwiek to jest jej pierwsza odpowiedź), i można to zrobić za pomocą
resignFirstResponder()
:źródło
UITextFieldDelegate
?Dodaj
UITextFieldDelegate
do deklaracji klasy:Podłącz
textfield
lub napisz programowoustaw kontroler widoku, tak jak załadowano delegowane pola tekstowe w widoku:
Dodaj następującą funkcję
po tym wszystkim klawiatura zacznie się odsuwać, dotykając również poza polem tekstowym, a także naciskając klawisz powrotu.
źródło
UITextFieldDelegate
... wielkie dzięki!Swift 4.2 - Nie potrzeba delegata
Możesz utworzyć ujście akcji z pola UITextField dla „ Wyzwolonej akcji podstawowej ” i zrezygnować z pierwszej odpowiedzi na przekazany parametr nadawcy:
Super proste.
(Dzięki 60-sekundowemu filmowi Scotta Smitha za poinformowanie mnie o tym: https://youtu.be/v6GrnVQy7iA )
źródło
Proste rozwiązanie Swift 3: Dodaj tę funkcję do kontrolerów widoku zawierających pole tekstowe:
Następnie otwórz asystenta edytora i upewnij się, że zarówno Main.storyboard znajduje się po jednej stronie widoku, jak i żądany plik kontrolera widoku.swift po drugiej stronie. Kliknij pole tekstowe, a następnie wybierz z panelu narzędzi po prawej stronie kartę „Pokaż Inspektora połączeń”. Przeciągnij kontrolkę z „Did End on Exit” do powyższej funkcji w swoim szybkim pliku. Powtórz dla każdego innego pola tekstowego w tej scenie i połącz z tą samą funkcją.
źródło
@RSC
dla mnie krytyczny dodatek w wersji Xcode 6.2 (6C86e) jest już dostępny
override func viewDidLoad()
Próbowałem godzinami pracować z kluczem powrotu, aż znalazłem twój post, RSC. Dziękuję Ci!
Ponadto, jeśli chcesz ukryć klawiaturę, jeśli dotkniesz gdziekolwiek indziej na ekranie:
źródło
Aby uzyskać automatyczne odrzucanie klawiatury, umieściłem ten kod w jednej z metod klasy mojego niestandardowego pola tekstowego:
Zastąp nazwę swojego punktu sprzedaży
textField
.źródło
mytextfield.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
(wersja Swift 5),viewDidLoad
ale nie działało ani powrót, ani stukanie poza polem tekstowym. Mam pola tekstowe, tworząc każde z nich.viewDidAppear
metodzie tej klasy.UIAlertController.addTextField(configurationHandler: {(textField: UITextField!) in textField.delegate = self textField.addTarget(self, action: #selector(MySubclass.textChanged(_:)), for: .editingChanged) })
Może to być nieco zbyt specyficzne dla mojej sprawy, ale mam nadzieję, że to pomaga. Spróbuj nawiązać połączenie wewnątrzviewDidAppear
iw razie potrzeby dostosować się do delegatów.Innym sposobem na zrobienie tego, który głównie wykorzystuje scenorys i łatwo pozwala mieć wiele pól tekstowych jest:
Połącz wszystkie pola tekstowe dla tego kontrolera widoku z tą akcją w
Did End On Exit
przypadku każdego pola.źródło
Sugerowałbym zainicjowanie zajęć z RSC:
}
źródło
Gdy użytkownik stuknie przycisk Gotowe na klawiaturze tekstowej, zostanie wygenerowane zdarzenie Did End On Exit; w tym czasie musimy powiedzieć polu tekstowemu, aby zrezygnowało z kontroli, aby klawiatura zniknęła. W tym celu musimy dodać metodę akcji do naszej klasy kontrolera. Wybierz ViewController.swift dodaj następującą metodę działania:
Wybierz Main.storyboard w Project Navigator i otwórz inspektora połączeń. Przeciągnij z koła obok Did End On Exit do żółtej ikony kontrolera widoku w serii ujęć i puść. Pojawi się małe menu podręczne zawierające nazwę pojedynczego działania, tego, które właśnie dodaliśmy. Kliknij akcję textFieldDoneEditing, aby ją wybrać i to wszystko.
źródło
Oto aktualizacja Swift 3.0 do komentarza typu peacetype:
źródło
Nienawidzę dodawać tej samej funkcji do każdego UIViewController. Rozszerzając UIViewController o obsługę UITextFieldDelegate, możesz zapewnić domyślne zachowanie „powrót wciśnięty”.
Kiedy tworzysz nowy UIViewController i UITextField, wszystko co musisz zrobić, to napisać jeden kod linii w UIViewController.
Możesz nawet pominąć ten jeden kod linii, podpinając delegata na Main.storyboard. (Używając „ctrl” i przeciągnij z UITextField do UIViewController)
źródło
Szybki 3
Dodaj ten kod poniżej do swojego VC
Pracuje dla mnie
źródło
Upewnij się, że Twój delegat textField jest ustawiony na kontroler widoku, z którego piszesz kod związany z polem tekstowym.
źródło
Szybki
Korzystanie z funkcji opcjonalnej od
UITextFieldDelegate
.false
oznacza, że pole można poprosić o rezygnację.true
- wymusić rezygnację.źródło
wtedy użyjesz tej funkcji
źródło
możesz umieścić to w dowolnym miejscu, ale nie w UIButton
następnie możesz umieścić ten kod w przycisku (również na przykład):
to działało dla mnie
źródło
W kontrolerze widoku używasz:
źródło
powinieneś połączyć UITextfied z delegatem kontrolera widoku, aby wywołać tę funkcję
źródło
All in One Hide Keyboard and Move View on Keyboard Open: Swift 5
źródło