Chcę odpowiedzieć na zdarzenia dotyku (w szczególności UIControlEventTouchUpInside
i UIControlEventTouchUpOutside
) na UITextField
, ale jedynym wydarzeniem, które przychodzi, jest UIControlEventTouchCancel
.Jak mogę odpowiedzieć na zdarzenia dotykowe na UITextField?
Nie mogę użyć UIControlEventEditingDidBegin
, ponieważ występuje tylko wtedy, gdy pole się skupia, co nie jest tym, co próbuję wykryć. Chcę wiedzieć, kiedy użytkownik podnosi palec i czy jest w środku pola tekstowego lub poza nim, niezależnie od aktualnego stanu skupienia.
Czy ktoś wie w jaki sposób to osiągnąć?
Aby było jasne, próbowałem używać addTarget:action:forControlEvents
, a to nie działa. Zdarzenie "dotknięcie" jest blokowane przez anulowanie. Chcę, aby metoda wykrywania dotyku była w stanie ją pochłonąć i wygenerować zdarzenie Anuluj.
Ponadto, jeśli to możliwe, chciałbym uniknąć tworzenia dodatkowych widoków.
Nie, to zdecydowanie nie działa. Pierwsza rzecz, którą próbowałem. Metoda "yourDesiredMethod" nigdy nie jest wywoływana. Mogę otrzymywać zdarzenia dla UIControlEventTouchDown, ale żadne z zdarzeń TouchUp nie jest uruchamiane. Zamiast tego jest wywoływane zdarzenie UIControlEventTouchCancel. Nie mogę po prostu użyć tego zdarzenia jako hacky proxy dla zdarzenia, które chcę, ponieważ jest ono również uruchamiane, gdy długie naciśnięcie powoduje wyświetlenie pętli powiększenia, a gdy coś innego anuluje dane wprowadzane przez użytkownika, takie jak modalne okno dialogowe lub ekran blokady . – theK42
Wow, założyłem, że będzie działało jak każda inna klasa oparta na UIView. Możesz być w stanie stworzyć niestandardowy UITextField i zastąpić metodę touchesBegan:, upewniając się, że stanie się on pierwszą odpowiedzią w odpowiednich przypadkach, więc klawiatura nadal będzie się wyświetlać. –
Próbowałem więc nadpisać dotknięcia/Zakończono/Anulowano, a także dało mi parę Początek/Anulowano, bez zdarzenia Zakończonego. To naprawdę frustrujące! Nadpisywanie tych metod nie przeszkadza w tym, że textField staje się pierwszym respondentem, więc klasa bazowa robi obsługę dotyku, zanim otrzymam szansę! – theK42