Mam UIView i dodałem do niego gest stuknięcia:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Próbuję wywołać to programowo w pliku testowym.
sendActionForEvent
Używam tej funkcji, ale nie działa:
myView.sendActionForEvent(UIEvents.touchUpDown)
Pokazuje nierozpoznany selektor wysłany do instancji.
Jak mogę rozwiązać ten problem?
imageView.userInteractionEnabled = true
jeśli używasz widoku obrazu. Za długo się tym złapałem.Odpowiedzi:
Musisz zainicjować
UITapGestureRecognizer
cel i akcję, na przykład:Następnie należy zaimplementować procedurę obsługi, która będzie wywoływana za każdym razem, gdy wystąpi zdarzenie tap:
Teraz wywołanie modułu obsługi zdarzeń rozpoznawania gestów dotknięcia jest tak proste, jak wywołanie metody:
źródło
tap.delegate = self
nie jest potrzebne, ponieważ już wyznaczyłeś cel i akcjęDla każdego, kto szuka rozwiązania Swift 3
źródło
isUserInteractionEnabled
jest naprawdę konieczne? wartość domyślna to false?view.isUserInteractionEnabled = true
jest kluczem, gdy twój widok to ImageView lub dowolna podklasa UIVIew zamiast UIControl.Dla Swift 4 :
W Swift 4 musisz wyraźnie wskazać, że wyzwalana funkcja jest wywoływana z Objective-C, więc musisz dodać @objc także do swojej funkcji handleTap.
Zobacz odpowiedź @Ali Beadle tutaj: Swift 4 dodaj gest: nadpisanie vs @objc
źródło
view.isUserInteractionEnabled = true
jest kluczem, gdy twój widok to ImageView lub dowolna podklasa UIVIew zamiast UIControl.Tylko uwaga - nie zapomnij włączyć interakcji w widoku:
źródło
KROK 1
KROK 2
KROK 3
KROK 4
WYNIK
źródło
Wdrażanie gestu stuknięcia
Wywołuje tę funkcję po rozpoznaniu kranu.
Aktualizacja dla Swift 3
źródło
Szybki 4
źródło
Tak to działa w Swift 3:
źródło
Pełna odpowiedź dla Swift 4
Krok 1: utwórz ujście dla widoku
Krok 2: zdefiniuj gest stuknięcia
Krok 3: Utwórz funkcję ObjC (wywoływaną po dotknięciu widoku)
Krok 4: Dodaj następujące elementy w ramach viewDidLoad ()
źródło
Swift 5.1 Przykład trzech widoków
Krok: 1 -> Dodaj widok scenorysu i dodaj widok gniazdkaController UIView
Krok: 2 -> Dodaj tag widoku StoryBoard
Krok: 3 -> Dodaj gest
Krok: 4 -> wybierz widok
źródło
Pracowałem na Xcode 6.4 na swift. Zobacz poniżej.
źródło
Jeśli chcesz, aby kod celu C podano poniżej,
lub chcesz, aby szybki kod podano poniżej,
źródło
Musisz zainicjować UITapGestureRecognizer z celem i akcją, na przykład:
Następnie należy zaimplementować procedurę obsługi, która będzie wywoływana za każdym razem, gdy wystąpi zdarzenie tap:
źródło
źródło
Szybki 4
Najpierw utwórz obiekt UITapGestureRecognizer
Drugim krokiem jest zainicjowanie UITapGestureReconizer. Włącz interakcję z użytkownikiem, a następnie dodaj ją.
Po trzecie, utwórz metodę
źródło
wypróbuj następujące rozszerzenie
a następnie użyj go:
możesz go nawet użyć do komórki
źródło
Pracowałem nad Xcode 7.3.1 na Swift 2.2. Zobacz poniżej.
źródło
addTapGesture()
swojeviewDidLoad()
Chciałem określić dwa punkty, które wciąż sprawiały mi problemy.
źródło
xCode 9.3, Swift 4.0
źródło
Wewnątrz ViewDidLoad
źródło
Oto najprostszy sposób dodawania gestów w widoku w Swift 5
źródło
Wypróbuj następujący szybki kod (przetestowany w Xcode 6.3.1):
Zauważ, że twoim celem może być dowolna podklasa UIResponder, zobacz (testowane w Xcode 6.3.1):
źródło
Zamiast wywoływać UITapGestureRecognizer myView, możesz bezpośrednio wywołać
handleTap
funkcję,źródło