Ricerca…


UITapGestureRecognizer

Inizializza UITapGestureRecognizer con un target, self in questo caso e action che è un metodo con un singolo parametro: un UITapGestureRecognizer .

Dopo l'inizializzazione, aggiungilo alla vista in cui dovrebbe riconoscere i tap in.

veloce

override func viewDidLoad() {
    super.viewDidLoad()
    let recognizer = UITapGestureRecognizer(target: self,
                                            action: #selector(handleTap(_:)))
    view.addGestureRecognizer(recognizer)
}

func handleTap(recognizer: UITapGestureRecognizer) {

}

Objective-C

- (void)viewDidLoad {
    [super viewDidLoad];
    UITapGestureRecognizer *recognizer =
        [[UITapGestureRecognizer alloc] initWithTarget:self
                                                action:@selector(handleTap:)];
    [self.view addGestureRecognizer:recognizer];
}

- (void)handleTap:(UITapGestureRecognizer *)recognizer {

}  


Esempio di eliminazione della tastiera tramite UITapGestureRecognizer:

Innanzitutto, si crea la funzione per il rifiuto della tastiera:

func dismissKeyboard() {
        view.endEditing(true)
    }  

Quindi, aggiungi un riconoscitore di gesti tocco nel controller di visualizzazione, chiamando il metodo appena creato

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
        view.addGestureRecognizer(tap)

Esempio di ottenere la posizione del gesto UITapGestureRecognizer (Swift 3):

func handleTap(gestureRecognizer: UITapGestureRecognizer) {
print("tap working")
if gestureRecognizer.state == UIGestureRecognizerState.recognized
   {
     print(gestureRecognizer.location(in: gestureRecognizer.view))
   }
}

UIPanGestureRecognizer

I riconoscimenti dei gesti di Pan rilevano i gesti di trascinamento. L'esempio seguente aggiunge un'immagine a un controller di visualizzazione e consente all'utente di trascinarlo sullo schermo.

Objective-C

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageToDrag"]];
    [imageView sizeToFit];
    imageView.userInteractionEnabled = YES;
    [self.view addSubview:imageView];
    
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [imageView addGestureRecognizer:pan];
}

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {
    CGPoint translation = [recognizer translationInView:self.view];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                         recognizer.view.center.y + translation.y);
    [recognizer setTranslation:CGPointZero inView:self.view];
}

veloce

override func viewDidLoad() {
    super.viewDidLoad()
    
    let imageView = UIImageView.init(image: UIImage.init(named: "imageToDrag"))
    imageView.sizeToFit()
    imageView.isUserInteractionEnabled = true
    self.view.addSubview(imageView)
    
    let pan = UIPanGestureRecognizer.init(target: self, action: #selector(handlePan(recognizer:)))
    imageView.addGestureRecognizer(pan)
}

func handlePan(recognizer: UIPanGestureRecognizer) {
    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x: view.center.x + translation.x, y: view.center.y + translation.y)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)
}

Nota: sebbene UIPanGestureRecognizer sia utile per rilevare qualsiasi movimento di trascinamento, se si desidera rilevare un gesto di base come l'utente che trascina il dito verso sinistra / destra o su / giù, utilizzare UISwipeGestureRecognizer . UIPanGestureRecognizer è una scelta migliore se hai bisogno di accedere a metodi come translationInView: o velocityInView:

UITapGestureRecognizer (Double Tap)

Il doppio tocco, come un singolo tocco, utilizza anche UITapGestureRecognizer . Devi semplicemente impostare numberOfTapsRequired su 2 .

veloce

override func viewDidLoad() {
    super.viewDidLoad()

    // Double Tap
    let doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap))
    doubleTapGesture.numberOfTapsRequired = 2
    doubleTapView.addGestureRecognizer(doubleTapGesture)
}

// Double tap action
func handleDoubleTap() {
    label.text = "Double tap recognized"
}

Gli appunti

  • Un esempio di progetto può essere trovato qui .
  • È possibile riconoscere un tocco triplo impostando il numberOfTapsRequired di numberOfTapsRequired su 3 .

UILongPressGestureRecognizer

UILongPressGestureRecognizer ti consente di ascoltare una pressione prolungata su una vista. È possibile impostare la durata del ritardo prima che venga chiamato il metodo di azione.

veloce

override func viewDidLoad() {
    super.viewDidLoad()

    // Long Press
    let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
    longPressView.addGestureRecognizer(longPressGesture)
}

// Long press action
func handleLongPress(gesture: UILongPressGestureRecognizer) {
    if gesture.state == UIGestureRecognizerState.Began {
        label.text = "Long press recognized"
    }
}

Gli appunti

  • Un progetto di esempio più completo può essere trovato qui .

  • Modificare la minimumPressDuration per impostare la lunghezza della pressione prolungata.

UISwipeGestureRecognizer

I gesti di scorrimento consentono di ascoltare l'utente spostando rapidamente il dito sullo schermo in una determinata direzione.

veloce

override func viewDidLoad() {
    super.viewDidLoad()

    // Swipe (right and left)
    let swipeRightGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(_:)))
    let swipeLeftGesture = UISwipeGestureRecognizer(target: self, action: #selector(handleSwipe(_:)))
    swipeRightGesture.direction = UISwipeGestureRecognizerDirection.Right
    swipeLeftGesture.direction = UISwipeGestureRecognizerDirection.Left
    swipeView.addGestureRecognizer(swipeRightGesture)
    swipeView.addGestureRecognizer(swipeLeftGesture)
}

// Swipe action
func handleSwipe(gesture: UISwipeGestureRecognizer) {
    label.text = "Swipe recognized"

    // example task: animate view off screen
    let originalLocation = swipeView.center
    if gesture.direction == UISwipeGestureRecognizerDirection.Right {
        label.text = "Swipe right"
    } else if gesture.direction == UISwipeGestureRecognizerDirection.Left {
        label.text = "Swipe left"
    }
}

Objective-C

- (void)viewDidLoad
{
[super viewDidLoad];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];

// Setting the swipe direction.
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];

// Adding the swipe gesture on image view
[self.view addGestureRecognizer:swipeLeft];
[self.view addGestureRecognizer:swipeRight];

}
//Handling Swipe Gesture Events

- (void)handleSwipe:(UISwipeGestureRecognizer *)swipe {

    if (swipe.direction == UISwipeGestureRecognizerDirectionLeft) {
        NSLog(@"Left Swipe");
    }

    if (swipe.direction == UISwipeGestureRecognizerDirectionRight) {
        NSLog(@"Right Swipe");   
    } 

}

Gli appunti

  • Un esempio di progetto più completo può essere trovato qui .

UIPinchGestureRecognizer

I pizzichi sono un gesto a due dita in cui le dita si avvicinano o si allontanano l'una dall'altra. Questo gesto è generalmente utilizzato per ridimensionare una vista.

veloce

override func viewDidLoad() {
    super.viewDidLoad()

    // Pinch
    let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(handlePinch(_:)))
    pinchView.addGestureRecognizer(pinchGesture)
}

// Pinch action
func handlePinch(gesture: UIPinchGestureRecognizer) {
    label.text = "Pinch recognized"

    if gesture.state == UIGestureRecognizerState.Changed {
        let transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale)
        pinchView.transform = transform
    }
}

Gli appunti

  • Un esempio di progetto più completo può essere trovato qui .

UIRotationGestureRecognizer

Con UIRotationGestureRecognizer possibile ascoltare due dita che ruotano attorno a un centro. Questo è generalmente usato per ruotare una vista.

veloce

override func viewDidLoad() {
    super.viewDidLoad()

    // Rotate
    let rotateGesture = UIRotationGestureRecognizer(target: self, action: #selector(handleRotate(_:)))
    rotateView.addGestureRecognizer(rotateGesture)
}

// Rotate action
func handleRotate(gesture: UIRotationGestureRecognizer) {
    label.text = "Rotate recognized"

    if gesture.state == UIGestureRecognizerState.Changed {
        let transform = CGAffineTransformMakeRotation(gesture.rotation)
        rotateView.transform = transform
    }
}

Gli appunti

  • Un esempio di progetto può essere trovato qui .

Aggiunta di un riconoscimento gestuale in Interface Builder

Trascina un riconoscitore di gesti dalla libreria degli oggetti sulla tua vista.

Aggiunta di screenshot di touch gesture touch

Controlla il trascinamento dal gesto nella struttura del documento al codice del controller di visualizzazione per creare un punto vendita e un'azione.

collegamento di presa e schermata di azione

Gli appunti



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow