[英]Issue with a UITapGestureRecognizer
我有一个主要的viewController,它被称为WelcomeViewController
。 我有一个UIView子类,它有一些与视图相关的东西。 我想在该子类中添加一个UITapGestureRecognizer
。 我只希望手势识别器确认该子视图内的水龙头。 我怎么做。 我应该将UITapGestureRecognizer
放在子类中,还是应该将它放在Welcome vc中。 提前致谢。
此外,我已经玩了一堆,似乎无法搞清楚。
这取决于您是要在自定义视图对象中还是在视图控制器中处理点击。
如果在视图中,将其添加到它的init
或其他适当的位置:
UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
如果在视图控制器中,将其添加到viewDidLoad
(或其他适当的位置):
UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[yourCustomView addGestureRecognizer:tapRecognizer];
[tapRecognizer release];
处理程序是相同的:
- (void)handleTap:(UITapGestureRecognizer*)recognizer
{
// Do Your thing.
if (recognizer.state == UIGestureRecognizerStateEnded)
{
}
}
看看SimpleGestureRecognizers示例,你应该得到一个非常好的主意。
----更新于10/1/2012 ----
对于那些喜欢使用storyboard / nib的人来说,这非常简单!
打开你的故事板/笔尖。
将所需的识别器从对象库拖放到所需的UI元素上。
右键单击识别器对象,然后将其selector
连接到文件所有者(通常是UIViewController)中的IBAction。如果需要,还要连接委托。
你完成了!
我认为您需要将手势识别器的委托设置为您想要处理水龙头的任何视图控制器。
gestureRecognizer.delegate = self;
例如。 然后在标题中采用UIGestureRecognizerDelegate协议。
请检查view.userInteractionEnabled=true;
您可以选择UITapGestureRecognizer
的接收器,它不必是实例化识别器(即self
)的同一个类。 如果在WelcomeViewConroller
创建它,则可以选择任何子视图来接收事件:
[tapRecognizer addTarget:aSubview action:@selector(myMethod:)];
我想你可能遇到过同样的问题。 当你调用[yourCustomView addGestureRecognizer:tapRecognizer]时; 你需要通过UIView *引用所以在你的例子中尝试:
UIView *mySubView = yourCustomView;
[mySubView addGestureRecognizer:tapRecognizer];
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.