gpt4 book ai didi

ios - 如何检测有人在 UIImageView 之外点击

转载 作者:可可西里 更新时间:2023-11-01 05:31:38 24 4
gpt4 key购买 nike

我有一个作为 subview 添加的 UIImageView。按下按钮时显示。

当有人在应用程序的任何部分中点击 UIImageView 外部时,我希望 UIImageView 消失。

@interface SomeMasterViewController : UITableViewController <clip>

<clip>

@property (strong, nonatomic) UIImageView *someImageView;

stackoverflow 和 Apple 的文档中有一些提示听起来像我需要的。

但是,我想在这里检查一下我的方法。我的理解是代码需要

  1. 注册一个 UITapGestureRecognizer 以获取应用程序中可能发生的所有触摸事件

  2. UITapGestureRecognizer 应该有它的 cancelsTouchesInView 和delaysTouchesBegan 和 delaysTouchesEnded 设置为 NO。

  3. 将这些触摸事件与 someImageView 进行比较(如何?使用 UIView hitTest:withEvent?)

更新:我正在向主 UIWindow 注册一个 UITapGestureRecognizer。

最后 Unresolved 部分

我有一个 UITapGestureRecognizer 将调用的 handleTap:(UITapGestureRecognizer *)。我如何获取给定的 UITapGestureRecognizer 并查看点击是否落在 UIImageView 之外? Recognizer 的 locationInView 看起来很有希望,但我没有得到我期望的结果。我希望在单击某个 UIImageView 时看到它,而在单击另一个位置时看不到 UIImageView。我感觉 locationInView 方法用错了。

这是我对 locationInView 方法的调用:

- (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer
{
if (gestureRecognizer.state != UIGestureRecognizerStateEnded) {
NSLog(@"handleTap NOT given UIGestureRecognizerStateEnded so nothing more to do");
return;
}

UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
CGPoint point = [gestureRecognizer locationInView:mainWindow];
NSLog(@"point x,y computed as the location in a given view is %f %f", point.x, point.y);

UIView *touchedView = [mainWindow hitTest:point withEvent:nil];
NSLog(@"touchedView = %@", touchedView);
}

我得到以下输出:

<clip>point x,y computed as the location in a given view is 0.000000 0.000000

<clip>touchedView = <UIWindow: 0x8c4e530; frame = (0 0; 768 1024); opaque = NO; autoresize = RM+BM; layer = <UIWindowLayer: 0x8c4c940>>

最佳答案

认为你可以直接说[event touchesForView:<image view>] .如果返回空数组,则关闭 ImageView 。在 TableView Controller 的 touchesBegan:withEvent: 中执行此操作, 并务必调用 [super touchesBegan:touches withEvent:event]否则您的表格 View 将完全停止工作。您可能甚至不需要实现 touchesEnded:/Cancelled:... , 或 touchesMoved:... .

在这种情况下,UITapGestureRecognizer 绝对看起来有点矫枉过正。

关于ios - 如何检测有人在 UIImageView 之外点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10037679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com