Я новичок в программировании и Objective C. Мне было интересно, как сделать приложение с пустым экраном и таймером, который идет на одну минуту. Вы должны нажимать так быстро, как можете, и до тех пор, пока можете. Мне было интересно, как реализовать UITapGestureRecognizer
в моем коде.
Как реализовать UITapGestureRecognizer в моем приложении
Ответ 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")
}
}