使用UITapGestureRecognizer时出现问题

And*_*rew 7 iphone subclass uigesturerecognizer uitapgesturerecognizer

我有一个主viewController,它被调用WelcomeViewController.我有一个UIView子类,它有一些与视图相关的东西.我想在UITapGestureRecognizer该子类中添加一个.我只希望手势识别器确认该子视图内的水龙头.我怎么做.我UITapGestureRecognizer应该把它放在子类中还是应该把它放在Welcome vc中.提前致谢.

此外,我已经玩了一堆,似乎无法搞清楚.

Jos*_*Lin 18

这取决于您是要在自定义视图对象中还是在视图控制器中处理点击.

如果在视图中,将其添加到它init或其他适当的位置:

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
Run Code Online (Sandbox Code Playgroud)

如果在视图控制器中,将其添加到viewDidLoad(或其他适当的位置):

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[yourCustomView addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
Run Code Online (Sandbox Code Playgroud)

处理程序是相同的:

- (void)handleTap:(UITapGestureRecognizer*)recognizer
{
    // Do Your thing. 
    if (recognizer.state == UIGestureRecognizerStateEnded)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

看看SimpleGestureRecognizers示例,你应该得到一个非常好的主意.

----更新于10/1/2012 ----

对于那些喜欢使用storyboard/nib的人来说,这非常简单!

  1. 打开你的故事板/笔尖.

  2. 将所需的识别器从对象库拖放到所需的UI元素上.

  3. 右键单击识别器对象,然后将其连接selector到文件所有者(通常是UIViewController)中的IBAction.如果需要,也可以连接委托.

  4. 你完成了!在此输入图像描述


Eva*_*ski 1

您可以选择 的接收者UITapGestureRecognizer,它不必与实例化识别器的类相同(即self)。如果您在 中创建它WelcomeViewConroller,则可以选择任何子视图来接收事件:

[tapRecognizer addTarget:aSubview action:@selector(myMethod:)];
Run Code Online (Sandbox Code Playgroud)