繁体   English   中英

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

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

我有一个我的应用程序的教程,它应该只在第一次打开应用程序时显示,并应点按以解除。

我正在viewDidLoad中初始化UITapGestureRecognizer:

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

我有一个IBAction来检测点击并将教程设置为隐藏:

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

但是我不知道在if语句条件中放什么,或者这是否是正确的方法来解决这个问题。

如何在水龙头上解雇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");
    }
}

你可以像这样制作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];
  }

要检测水龙头,您可以像这样制作方法。

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

你必须将.h文件声明为“UIGestureRecognizerDelegate”

你已经按照以下步骤的两种方式轻拍手势。

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)给予行动

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

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

可能会有所帮助。

我想你需要检测第一次启动应用程序,你可以用它来做

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

把它放在你的if语句中。

暂无
暂无

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

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