Jak rozpoznać podwójne dotknięcie na Uibutton?Double touch on UIButton
Odpowiedz
Dodaj docelową-działanie dla zdarzenia sterowania UIControlEventTouchDownRepeat, a nie tylko wtedy, gdy działanie touch tapCount
to 2.
Objective-C:
[button addTarget:self action:@selector(multipleTap:withEvent:)
forControlEvents:UIControlEventTouchDownRepeat];
...
-(IBAction)multipleTap:(id)sender withEvent:(UIEvent*)event {
UITouch* touch = [[event allTouches] anyObject];
if (touch.tapCount == 2) {
// do action.
}
}
Jak skomentował @Gavin dwukrotnie -przycisk na przycisku jest niezwykłym gestem. W systemie iPhone OS dwukrotne dotknięcie służy głównie do powiększania widoków w celu powiększenia/pomniejszenia obszaru ostrości. Może to być niezrozumiałe dla użytkowników, jeśli wykonasz gest w celu wykonania innych czynności.
Swift 3:
button.addTarget(self, action: #selector(multipleTap(_:event:)), for: UIControlEvents.touchDownRepeat)
A potem:
func multipleTap(_ sender: UIButton, event: UIEvent) {
let touch: UITouch = event.allTouches!.first!
if (touch.tapCount == 2) {
// do action.
}
}
Dzięki, to jest czyste rozwiązanie – Aitul
Może to być przydatne do zapobiegania niechcianym podwójnym dotknięciom. Na przykład, jeśli wysyłasz żądanie do serwera. – johnnymire
@johnnymire: Równie dobrze można natychmiast wyłączyć przycisk po pierwszym kliknięciu. – kennytm
spróbuje użyć tego dla przycisku przypadku
UIControlEventTouchDownRepeat
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button.addTarget(self, action: "didTap:", forControlEvents: .TouchUpInside)
button.addTarget(self, action: "didDoubleTap:", forControlEvents: .TouchDownRepeat)
}
var ignoreTap = false
func didTap(sender: UIButton) {
if ignoreTap {
ignoreTap = false
print("ignoretap", sender)
return
}
print("didTap", sender)
}
func didDoubleTap(sender: UIButton) {
ignoreTap = true
print("didDoubleTap", sender)
}
- 1. C#: double [] [] i double [,]
- 2. Zdarzenia UIButton. Co za różnica?
- 3. przechowywać iPhone UIButton podświetlone
- 4. Uibutton jako UIButton w szybkim?
- 5. Haskell monada: IO [Double] do [IO Double]
- 6. Dlaczego Math.Floor (Double) zwraca wartość typu Double?
- 7. Jak uruchomić aplikację Touch Touch w Eclipse
- 8. Double LEFT DOŁĄCZ
- 9. UIButton touch up wewnątrz zdarzenia nie działa w ios5, podczas gdy jest dobrze w ios6
- 10. Kod programowy akcja UIButton
- 11. dlaczego boost :: call_traits <double> :: param_type to "const double &", a nie "double"
- 12. error: funkcja "atomicAdd (double *, double)" została już zdefiniowana
- 13. Czy istnieje znacząca różnica między "Double" i "double" w .Net?
- 14. Dlaczego Math.ceil zwraca double?
- 15. Double to Const Char *
- 16. Android Double Tap
- 17. Porównanie Double Java
- 18. Double ma wiele atrybutów
- 19. Node.js double console.log output
- 20. Sencha Touch and Leaflet.js API
- 21. Struktura aplikacji Sencha Touch
- 22. Sencha Touch i ExtJS
- 23. Akordeon w Sencha touch
- 24. IDE dla Sencha Touch
- 25. Sencha Touch nie inicjuje
- 26. Sencha Touch itemtap
- 27. Cocoa-Touch - Delegacja zamieszania
- 28. Touch ID zamarza AVCaptureDevice
- 29. Jak usunąć górne i dolne wypełnienie UIButton, gdy jest on tworzony przy użyciu automatycznego układu?
- 30. Uibutton miga po naciśnięciu
dwukrotnie dotykając nie jest podstawka ard, ani oczywiste zachowanie UIButton. Powinieneś zastanowić się, dlaczego potrzebujesz tej akcji. –