Zajmuję się tworzeniem aplikacji do wyświetlania galerii UIImages
przy użyciu UIScrollView
, moim pytaniem jest, jak dotknąć zoom
i dwukrotnie dotknij, aby zoom
się, jak to działa podczas pracy z UIScrollView
.Jak stuknąć, aby powiększyć i dwukrotnie dotknąć, aby pomniejszyć w systemie iOS?
19
A
Odpowiedz
38
Trzeba wdrożyć UITapGestureRecognizer - docs here - w viewController
- (void)viewDidLoad
{
[super viewDidLoad];
// what object is going to handle the gesture when it gets recognised ?
// the argument for tap is the gesture that caused this message to be sent
UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)];
UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)];
// set number of taps required
tapOnce.numberOfTapsRequired = 1;
tapTwice.numberOfTapsRequired = 2;
// stops tapOnce from overriding tapTwice
[tapOnce requireGestureRecognizerToFail:tapTwice];
// now add the gesture recogniser to a view
// this will be the view that recognises the gesture
[self.view addGestureRecognizer:tapOnce];
[self.view addGestureRecognizer:tapTwice];
}
Zasadniczo ten kod jest powiedzenie, że kiedy UITapGesture
jest zarejestrowany w self.view
zastosowano metodę tapOnce lub tapTwice zostanie wywołana w self
w zależności od tego, czy jest to pojedyncze czy podwójne dotknięcie. Dlatego trzeba dodać te metody kranu do swojej UIViewController
:
- (void)tapOnce:(UIGestureRecognizer *)gesture
{
//on a single tap, call zoomToRect in UIScrollView
[self.myScrollView zoomToRect:rectToZoomInTo animated:NO];
}
- (void)tapTwice:(UIGestureRecognizer *)gesture
{
//on a double tap, call zoomToRect in UIScrollView
[self.myScrollView zoomToRect:rectToZoomOutTo animated:NO];
}
nadzieję, że pomoże
2
Swift 3.0 wersję, która powiększa dwukrotnie podwójnego dotknięcia.
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
Gdzieś (zwykle w viewDidLoad):
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDoubleTap(gestureRecognizer:)))
tapRecognizer.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(tapRecognizer)
Handler:
func onDoubleTap(gestureRecognizer: UITapGestureRecognizer) {
let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale)
if scale != scrollView.zoomScale {
let point = gestureRecognizer.location(in: imageView)
let scrollSize = scrollView.frame.size
let size = CGSize(width: scrollSize.width/scale,
height: scrollSize.height/scale)
let origin = CGPoint(x: point.x - size.width/2,
y: point.y - size.height/2)
scrollView.zoom(to:CGRect(origin: origin, size: size), animated: true)
print(CGRect(origin: origin, size: size))
}
}
Powiązane problemy
- 1. Sposobów, aby powiększyć w WPF
- 2. Implementacja kontenera "kliknij, aby powiększyć"
- 3. Wyłącz szczypanie, aby powiększyć IE10
- 4. Szczypta, aby powiększyć na płótnie
- 5. Konwersja GWT Kliknij zdarzenia, aby dotknąć zdarzenia
- 6. Jak mogę powiększyć/pomniejszyć moją stronę bez wpływu sekcjach
- 7. za pomocą "dotknąć", aby utworzyć katalogi?
- 8. Powiększyć, aby dopasować bieżące położenie i adnotację na mapie
- 9. Jak używać przycisku myszy i przeciągnij, aby powiększyć D3
- 10. Szczypta, aby powiększyć za pomocą CSS3
- 11. Jaki jest najlepszy sposób, aby pomniejszyć i dopasować wszystkie adnotacje w MapKit
- 12. Jak programowo powiększyć widok UIScrollView?
- 13. kliknij dwukrotnie, aby otworzyć notebooka ipython
- 14. Kliknij dwukrotnie element ListBox, aby otworzyć przeglądarkę.
- 15. Muszę dwukrotnie kliknąć przycisk, aby zadziałał.
- 16. Formatuj dwukrotnie, aby pominąć niepotrzebne ".0" i nigdy nie zaokrąglaj.
- 17. remap NERDTree Kliknij dwukrotnie, aby "T"
- 18. Przesunięcie obrazu w WPF, aby zmienić obraz, jak w iOS
- 19. Jak ustawić rozmiar UIBarButton w systemie iOS 11, aby dopasować rozmiar do iOS 10
- 20. Jak powiększyć ImageView w Androidzie
- 21. Jak mogę pomniejszyć widok?
- 22. Powiąż pliki klas Java, aby uruchomić dwukrotnie kliknij na Windows
- 23. szczypta powiększyć, pomniejszyć - javascript/jquery/jquery mobilne wydarzenia dla sieci na platformie Android?
- 24. Posiada przycisk, aby kliknąć dwukrotnie w ASP.NET (po AutoPostBack tekstowym)
- 25. Kliknij dwukrotnie plik dokumentu w systemie Mac OS X, aby otworzyć aplikację Java
- 26. iOS żyroskop, aby wirtualny horyzont
- 27. Jak powiększyć wykres utworzony za pomocą CGContextRef
- 28. Kliknij dwukrotnie instalator w systemie Ubuntu?
- 29. przesłonięcie JTree kliknij dwukrotnie, aby zapobiec rozszerzeniu węzła?
- 30. Należy dwukrotnie nacisnąć przycisk Wstecz, aby wrócić do aktywności
Dziękuję bardzo za odpowiedź, będę go przetestować i zgłoś się wkrótce ma się to możliwe. – Bruno
czy to możliwe? Webview rozpoznać dotknąć linków w stronie internetowej – Codesen
[tapOnce requireGestureRecognizerToFail: tapTwice]; jest dokładnie tym, czego szukałem. Dzięki! – Bastek