如何将UITapGestureRecognizer实现到我的应用程序中
我对编程和Objective C是相当新的。我想知道如何制作一个应用程序,它有一个空白的屏幕和一分钟的计时器。 你打算尽可能快地挖掘,只要你可以。 我想知道如何在我的代码中实现UITapGestureRecognizer
。
这是关于如何在您的课堂上实现手势识别器的一步一步指南:
-
使您的课程符合
UIGestureRecognizerDelegate
协议。 -
实例化手势识别器。 例如,要实例化一个
UITapGestureRecognizer
,我们将执行:UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
在这里,动作是将处理手势的select器。 在这里,我们的select器handleTapFrom看起来像这样:
- (void) handleTapFrom: (UITapGestureRecognizer *)recognizer { //Code to handle the gesture }
select器的参数是手势识别器。 我们可以使用这个手势识别器来访问它的属性,例如,我们可以find手势识别器的状态,比如
UIGestureRecognizerStateBegan
,UIGestureRecognizerStateEnded
等等。 -
在实例化的手势识别器上设置所需的属性。 例如,对于
UITapGestureRecognizer
,我们可以设置属性numberOfTapsRequired
和numberOfTouchesRequired
。 -
将手势识别器添加到要检测手势的视图。 在我们的示例代码中(我将分享该代码供您参考),我们将使用以下代码行将手势识别器添加到imageView中:
[self.imageView addGestureRecognizer:tapGestureRecognizer];
-
将手势识别器添加到视图后,设置手势识别器的委托,即处理所有手势识别器的类。 在我们的示例代码中,它将如下所示:
tapGestureRecognizer.delegate = self;
注意:在将手势识别器添加到视图后分配委托。 否则,操作方法将不会被调用。
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
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.") } } }
如果您正在使用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") } }