Подтвердить что ты не робот

Как реализовать UITapGestureRecognizer в моем приложении

Я новичок в программировании и Objective C. Мне было интересно, как сделать приложение с пустым экраном и таймером, который идет на одну минуту. Вы должны нажимать так быстро, как можете, и до тех пор, пока можете. Мне было интересно, как реализовать UITapGestureRecognizer в моем коде.

4b9b3361

Ответ 1

Это пошаговое руководство по внедрению распознавателей жестов в вашем классе:

  • Сопоставьте свой класс с протоколом UIGestureRecognizerDelegate.

  • Мгновенное действие распознавателя жестов. Например, чтобы создать экземпляр UITapGestureRecognizer, мы сделаем следующее:

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
    

    Здесь действие - это селектор, который будет обрабатывать жест. Здесь наш селектор handleTapFrom будет выглядеть примерно так:

    - (void) handleTapFrom: (UITapGestureRecognizer *)recognizer
    {
        //Code to handle the gesture
    }
    

    Аргументом для селектора является распознаватель жестов. Мы можем использовать этот распознаватель жестов для доступа к его свойствам, например, мы можем найти состояние распознавателя жестов, например UIGestureRecognizerStateBegan, UIGestureRecognizerStateEnded и т.д.

  • Задайте требуемые свойства для созданного экземпляра распознавателя жестов. Например, при a UITapGestureRecognizer мы можем установить свойства numberOfTapsRequired и numberOfTouchesRequired.

  • Добавьте распознаватель жестов в представление, для которого вы хотите определить жесты. В нашем примере кода (я буду использовать этот код для вашей справки) мы добавим распознаватели жестов в imageView со следующей строкой кода:

    [self.imageView addGestureRecognizer:tapGestureRecognizer];
    
  • После добавления распознавателя жестов в представление установите делегат для распознавателя жестов, то есть класс, который будет обрабатывать все элементы распознавания жестов. В нашем примере кода это будет выглядеть так:

    tapGestureRecognizer.delegate = self;
    

    Примечание. Назначьте делегата после добавления распознавателя жестов в представление. В противном случае метод действия не будет вызван.

Ответ 2

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tableView addGestureRecognizer:gestureRecognizer];
self.tableView.userInteractionEnabled = YES;
gestureRecognizer.cancelsTouchesInView = NO;  // this prevents the gesture recognizers to 'block' touches

Ответ 3

Пример в Swift:

import UIKit

class ViewController: UIViewController {

    @IBOutlet var myUIImageView: UIImageView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "myUIImageViewTapped:")
        singleTap.numberOfTapsRequired = 1
        singleTap.numberOfTouchesRequired = 1
        self.myUIImageView.addGestureRecognizer(singleTap)
        self.myUIImageView.userInteractionEnabled = true
    }

    func myUIImageViewTapped(recognizer: UITapGestureRecognizer) {
        if(recognizer.state == UIGestureRecognizerState.Ended){
            println("myUIImageView has been tapped by the user.")
        }
    }

}

Ответ 4

Если вы работаете с Swift (iOS9) и SpriteKit, попробуйте следующее.

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        let singleTap = UITapGestureRecognizer(target:self, action:#selector(self.handleSingleTap:))
        singleTap.numberOfTouchesRequired = 1
        singleTap.addTarget(self, action:#selector(self.handleSingleTap))
        view.userInteractionEnabled = true
        view.addGestureRecognizer(singleTap)
    }
    //event handler
    func handleSingleTap(sender:UITapGestureRecognizer){
        print("tapped")
    }
}