Zoeken…


UITapGestureRecognizer

Initialiseer de UITapGestureRecognizer met een doel, self in dit geval, en een action die een werkwijze die een enkele parameter: a UITapGestureRecognizer .

Na initialisatie, voeg het toe aan de weergave dat het tikken zou moeten herkennen.

Snel

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

func handleTap(recognizer: UITapGestureRecognizer) {

}

Doelstelling C

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

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

}  


Voorbeeld van toetsenbordontslag via UITapGestureRecognizer:

Eerst maakt u de functie voor het sluiten van het toetsenbord:

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

Vervolgens voegt u een tikgebaarherkenning toe aan uw viewcontroller en roept u de methode aan die we zojuist hebben gemaakt

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

Voorbeeld van het verkrijgen van gebarenlocatie UITapGestureRecognizer (Swift 3):

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

UIPanGestureRecognizer

Pangebaarherkenners detecteren sleepbewegingen. In het volgende voorbeeld wordt een afbeelding toegevoegd aan een weergavecontroller en kan de gebruiker deze op het scherm rondslepen.

Doelstelling 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];
}

Snel

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)
}

Opmerking: hoewel UIPanGestureRecognizer handig is voor het detecteren van UISwipeGestureRecognizer , kunt u UISwipeGestureRecognizer gebruiken als u alleen een basisgebaar wilt detecteren, zoals gebruikers die hun vinger naar links / rechts of omhoog / omlaag UISwipeGestureRecognizer . UIPanGestureRecognizer is een betere keuze als u toegang nodig hebt tot methoden zoals translationInView: of velocityInView:

UITapGestureRecognizer (dubbeltikken)

De dubbele tik, zoals een enkele tik, maakt ook gebruik van de UITapGestureRecognizer . U stelt eenvoudig het numberOfTapsRequired op 2 .

Snel

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"
}

Notes

  • Een voorbeeld project kan worden gevonden hier .
  • U zou een drievoudige tik kunnen herkennen door het numberOfTapsRequired op 3 .

UILongPressGestureRecognizer

Met de UILongPressGestureRecognizer kun je lang naar een weergave luisteren. U kunt de vertraging instellen voordat de actiemethode wordt aangeroepen.

Snel

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"
    }
}

Notes

  • Een vollediger monster project kan worden gevonden hier .

  • Wijzig de minimumPressDuration om de lengte van de lange druk in te stellen.

UISwipeGestureRecognizer

Met veegbewegingen kunt u luisteren naar de gebruiker die zijn vinger snel over het scherm beweegt in een bepaalde richting.

Snel

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"
    }
}

Doelstelling 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");   
    } 

}

Notes

  • Een vollediger project voorbeeld kan worden gevonden hier .

UIPinchGestureRecognizer

Pinches zijn een gebaar met twee vingers waarbij de vingers dichter of verder van elkaar af bewegen. Dit gebaar wordt meestal gebruikt om het formaat van een weergave te wijzigen.

Snel

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
    }
}

Notes

  • Een vollediger project voorbeeld kan worden gevonden hier .

UIRotationGestureRecognizer

Met de UIRotationGestureRecognizer kan worden geluisterd naar twee vingers die rond een midden UIRotationGestureRecognizer . Dit wordt meestal gebruikt om een beeld te roteren.

Snel

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
    }
}

Notes

  • Een voorbeeld project kan worden gevonden hier .

Een gebaarherkenning toevoegen in de Interface Builder

Sleep een gebaarherkenner uit de objectbibliotheek naar uw weergave.

Schermafbeelding van tikgebaarherkenning toevoegen

Control slepen van het gebaar in de Documentoverzicht naar uw View Controller-code om een Outlet en een Action te maken.

aansluiten stopcontact en actie screenshot

Notes



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow