UITapGestureRecognizer 识别主视图上的点击(不是输入或按钮)

发布于 2024-12-12 00:16:31 字数 236 浏览 0 评论 0原文

我希望当用户单击 UIView 背景的任何部分时收到通知;基本上,如果用户在我的 UIView 上的任何控件(表格、文本字段、按钮等)之外单击。

我该怎么办?我尝试这样做:

if ([touch.view isKindOf:[UIView class]]) {
    do something....
}

但是,显然所有控件都扩展了 UIView...所以,我有点卡住了。

I would like to get notified when a user clicks any part of the background of my UIView; basically if the user clicks outside of any control that is on my UIView (tables, textfields, buttons, etc).

How do I go about it? I tried doing this:

if ([touch.view isKindOf:[UIView class]]) {
    do something....
}

But, obviously all controls extend UIView... so, I'm a bit stuck.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

思念绕指尖 2024-12-19 00:16:31

您应该能够执行以下操作:

backgroundView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHit:)] autorelease];
[backgroundView addGestureRecognizer:tap];

-(void) tapHit:(UITapGestureRecognizer *tap) {
  NSLog( @"background tapped" );
}

You should be able to do the following:

backgroundView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHit:)] autorelease];
[backgroundView addGestureRecognizer:tap];

-(void) tapHit:(UITapGestureRecognizer *tap) {
  NSLog( @"background tapped" );
}
亢潮 2024-12-19 00:16:31

实现此目的的一种方法是添加一个单独的背景视图,该背景视图是 VC 主视图的子视图。您只需将其设置为透明即可,这样就不会影响您的造型。位置位于所有其他儿童景观的后面。然后在该视图上注册您的 GR。

One way you could do this is add a separate background view that is a child of your VC's main view. You can simply make it transparent so it doesn't interfere with your styling. Place is in the behind all the other children views. Then register your GR on that view.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文