2012-03-06 10 views
10

Mam widok w XIB, gdzie użyłem kilku pól tekstowych w nim. Powiedzmy, że pierwsze pole tekstowe staje się pierwszym reagującym, gdy tylko widok zostanie załadowany do okna. Jeśli wciśniesz klawisz tab w klawiaturze mojej maszyny, aby przejść do następnego pola tekstowego, oprócz bezpośredniego pola tekstowego, wszystkie inne pola tekstowe również stają się pierwszą odpowiedzią, a pole tekstowe rozpoczyna edycję, a delegat menthod jest wywoływany dla wszystkich pól tekstowych. Co może być problemem ? Będzie to miało miejsce nie tylko w symulatorze, gdy używamy klawiatury urządzenia, także gdy używamy klawiatury bluetooth na urządzeniu z iOS.TextField Zostanie pomylony problem dotyczący akcji klawisza Tab (klawiatura)

+1

Po prostu wpadłem na ten sam problem. Metoda textFieldShouldBeginEditing delegate może być użyta w celu uniemożliwienia edycji, ale wtedy pytanie brzmi: jak ustalić, czy wywołano wywołanie metody textFieldShouldBeginEditing z powodu klawisza tab lub tapingu textField. – Vladimir

+0

Mam również uruchomić ten sam problem ... Poważnie, dlaczego jabłko nie regsiter klawisz klawisza wciśnij wewnątrz textfield: shouldChangeCharactersInRange: replacementString: – HurkNburkS

Odpowiedz

2

Naciśnięcie klawisza tab => nawigacja do następnego pola tekstowego w odniesieniu do heirarchii pól tekstowych w widoku.

Po naciśnięciu klawisza - pole tekstowe może być wywoływane tyle razy, co pola tekstowe - co oznacza - 5 pól tekstowych => jeden klawisz tabulatora, wszystkie 5 instancji zostanie wywołanych. Po naciśnięciu tab - textfielddidbeginediting będzie wywoływane tylko raz w odniesieniu do nowej instancji pola tekstowego - stąd każda logika pola tekstowego lepiej znajdować się w textfielddidbeginediting delegate method.

Są to domyślne cechy metod delegatów, a nie problem.

Powiązane problemy