Używam kilku rozpoznawania gestów w niektórych widokach, ale czasami widoki są zbyt małe i trudno je trafić. Używanie identyfikatorów jest konieczne, więc jak mogę powiększyć obszar działania?Jak powiększyć obszar uderzenia UIGestureRecognizer?
8
A
Odpowiedz
19
Jeśli robisz to za zwyczaj UIView
, powinieneś być w stanie zastąpić metodę hitTest:withEvent:
:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
CGRect frame = CGRectInset(self.bounds, -20, -20);
return CGRectContainsPoint(frame, point) ? self : nil;
}
Powyższy kod będzie dodać obramowanie 20 wokół punktu widzenia. Stukanie w dowolnym miejscu w tym obszarze (lub w samym widoku) będzie wskazywać trafienie.
0
Jeśli używasz UIImageView
jako przycisk, można użyć następujące rozszerzenia (Swift 3.0):
extension UIImageView {
open override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.isHidden || !self.isUserInteractionEnabled || self.alpha < 0.01 { return nil }
let minimumHitArea = CGSize(width: 50, height: 50)
let buttonSize = self.bounds.size
let widthToAdd = max(minimumHitArea.width - buttonSize.width, 0)
let heightToAdd = max(minimumHitArea.height - buttonSize.height, 0)
let largerFrame = self.bounds.insetBy(dx: -widthToAdd/2, dy: -heightToAdd/2)
// perform hit test on larger frame
return (largerFrame.contains(point)) ? self : nil
}
}
podobny do rozszerzenia UIButton
here
0
Swift wersja odpowiedzi @rmaddy:
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let frame = self.bounds.insetBy(dx: -20, dy: -20);
return frame.contains(point) ? self : nil;
}
Powiązane problemy
- 1. xcode iOS zwiększ obszar uderzenia UIButton
- 2. Efekt uderzenia na TextBlock
- 3. AS3: Definiowanie obszaru uderzenia
- 4. Jak dodać segment do UIGestureRecognizer
- 5. Jak powiększyć ImageView w Androidzie
- 6. Jak programowo powiększyć widok UIScrollView?
- 7. Cofnij [UIGestureRecognizer * requireGestureRecognizerToFail]
- 8. Poprawa wydajności funkcji uderzenia raytracing
- 9. UIGestureRecognizer przeciągnij UIView
- 10. UIGestureRecognizer za część UIView
- 11. Wykluczanie subviews z UIGestureRecognizer
- 12. Jak zdefiniować niestandardowy UIGestureRecognizer w Swift?
- 13. Ignorowanie UIGestureRecognizer po naciśnięciu przycisku
- 14. UIgestureRecognizer w widoku wewnątrz UIScrollView
- 15. Uzyskiwanie obiektów UITouch dla UIGestureRecognizer
- 16. Czy UIGestureRecognizer działa na UIWebView?
- 17. Jak powiększyć wykres utworzony za pomocą CGContextRef
- 18. Jak powiększyć szerokość wydruku w ggplot2?
- 19. java.security.PrivilegedActionException podczas uderzenia webservices nad https
- 20. Sposobów, aby powiększyć w WPF
- 21. Implementacja kontenera "kliknij, aby powiększyć"
- 22. Wyłącz szczypanie, aby powiększyć IE10
- 23. Szczypta, aby powiększyć na płótnie
- 24. Jak wypełnić obszar wykresu kolorem
- 25. Jak przenieść obszar roboczy NetBeans?
- 26. Jak przyciąć wewnętrzny obszar konturu?
- 27. Słuchanie zdarzenia UITouch wraz z UIGestureRecognizer
- 28. Dodawanie UIGestureRecognizer do subskrybcji programowo w Swift
- 29. Jak mogę poinformować UIGestureRecognizer, aby anulował istniejący dotyk?
- 30. Jak przekazać argumentu do działania w UIGestureRecognizer initWithTarget działania
Tak, pytasz, jak powiększyć widok? – Jordan
Nie, oczywiście wiem, jak powiększyć kadr :) Chcę powiększyć ramę uderzenia, nie naruszając jej prawdziwej ramki. – Tesseract