简体   繁体   English

如何在视图中的任何位置检测到点击?

[英]How do I detect a tap anywhere in the view?

I have a tutorial for my app, which should display only the first time the app is opened and should be tapped to dismiss. 我有一个我的应用程序的教程,它应该只在第一次打开应用程序时显示,并应点按以解除。

I am initializing a UITapGestureRecognizer in my viewDidLoad: 我正在viewDidLoad中初始化UITapGestureRecognizer:

tapper_tut = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapper_tut.cancelsTouchesInView = FALSE;
[self.view addGestureRecognizer:tapper_tut];

and I have an IBAction to detect the tap and set the tutorial to hidden: 我有一个IBAction来检测点击并将教程设置为隐藏:

- (IBAction)dismiss_tut{
    if (????????????????) {
        _tutorial.hidden = YES;
    }
}

But I have no idea what to put in the if statement condition, or if this is even that right way to go about this. 但是我不知道在if语句条件中放什么,或者这是否是正确的方法来解决这个问题。

How would I dismiss a UIImageView on a tap? 如何在水龙头上解雇UIImageView?

UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[self.view addGestureRecognizer:gr];
// if not using ARC, you should [gr release];
// mySensitiveRect coords are in the coordinate system of self.view


- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer {
    CGPoint p = [gestureRecognizer locationInView:self.view];
    if (CGRectContainsPoint(mySensitiveRect, p)) {
        NSLog(@"got a tap in the region i care about");
    } else {
        NSLog(@"got a tap, but not where i need it");
    }
}

You can make viewDidLoad like this 你可以像这样制作viewDidLoad

- (void)viewDidLoad 
  { 
      [super viewDidLoad];
      self.view.backgroundColor = [UIColor whiteColor];

      /* Create the Tap Gesture Recognizer */
      self.tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self
                                   action:@selector(handleTaps:)]; 

     /* The number of fingers that must be on the screen */
      self.tapGestureRecognizer.numberOfTouchesRequired = 1;

     /* The total number of taps to be performed before the gesture is recognized */
      self.tapGestureRecognizer.numberOfTapsRequired = 1;

     /* Add this gesture recognizer to the view */
     [self.view addGestureRecognizer:self.tapGestureRecognizer];
  }

To detect the taps you can make the method like this. 要检测水龙头,您可以像这样制作方法。

- (void) handleTaps:(UITapGestureRecognizer*)paramSender
  {
      NSUInteger touchCounter = 0; 
      for (touchCounter = 0;touchCounter < paramSender.numberOfTouchesRequired;touchCounter++)
      {
            CGPoint touchPoint =[paramSender locationOfTouch:touchCounter inView:paramSender.view];
            NSLog(@"Touch #%lu: %@",(unsigned long)touchCounter+1, NSStringFromCGPoint(touchPoint));
      }
  }

you have to declare .h file as "UIGestureRecognizerDelegate" 你必须将.h文件声明为“UIGestureRecognizerDelegate”

you have getting tap of gesture as two way as given below steps. 你已经按照以下步骤的两种方式轻拍手势。

1) Call delegate method of GestureRecognizer (not given action ) 1)调用GestureRecognizer的委托方法(未给出动作)

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:nil]; // not given  action.
recognizer.numberOfTouchesRequired=1;// here how many tap you want set it 
[self.view addGestureRecognizer:recognizer];
recognizer.delegate = self;

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
 {
     //whatever you want write code here
    return NO;
  }

2) given action 2)给予行动

 UITapGestureRecognizer *oneTouch=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(Addphoto)];
 [oneTouch setNumberOfTouchesRequired:1];
 [self.view addGestureRecognizer:oneTouch];

 -(IBAction)Addphoto
 {
     //whatever you want write code here
 }

may be it will help . 可能会有所帮助。

I think u need to detect the first time launch of the application which u can do with following 我想你需要检测第一次启动应用程序,你可以用它来做

![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"] ![[NSUserDefaults standardUserDefaults] boolForKey:@“HasLaunchedOnce”]

Put this in your if statement . 把它放在你的if语句中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM