2013-02-05 12 views
5

Mam UITextField, ale chcę mieć kontrolę nad tym, kiedy jest skupiony i gdy jest nieostry.Wyłączenie dotknięć, ale nie wszystkich interakcji użytkownika w UITextField

Aby to osiągnąć, muszę mieć możliwość blokowania zdarzeń dotykowych w tym polu tekstowym. Wiem, że mogłem po prostu nacisnąć przycisk przed nim i ręcznie to zrobić, ale chciałem wiedzieć, czy był jakiś sposób, aby po prostu wyłączyć dotknięcia elementu.

Wielkie dzięki.

Odpowiedz

13

Wygląda na to, że nie ma sposobu blokowania dotknięć za pomocą właściwości UITextField. Rozwiązałem ten problem, umieszczając UIView nad polem tekstowym, aby zablokować dotknięcia. Ustawiłem UIView na "Clear Color" używając inspektora atrybutów. Działa doskonale do mojej aplikacji.

1

Co z własnością userInteractionEnabled?

+1

To również zatrzymuje cię od wprowadzającej tekst za pomocą klawiatury, co ja potrzeba. Chcę tylko przestać dotykać. Nie ** wszystkie ** interakcja. :) –

+0

Nie rozumiem ... jeśli wyłączysz dotknięcia, to użytkownik nie będzie w stanie go dotknąć, aby wydobyć klawiaturę, więc jaka jest różnica? – borrrden

+0

Ale mogę ręcznie wywołać 'becomeFirstResponder' na nim, aby wydobyć klawiaturę. :) –

0

musiałem interakcji kursora podczas edycji, więc przed becomeFirstResponder() i ustawić isUserInteractionEnabled = true i edycji końcowej ustawić go na fałszywej

@IBAction func editTapped(_ sender: UIButton) { 
    textField.isUserInteractionEnabled = true 
    textField.becomeFirstResponder() 
} 


func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
    print(textField.textValue) 

    textField.isUserInteractionEnabled = false 

    return true 
} 
Powiązane problemy