Iphone 当用户在UIView之外进行触摸时,如何处理事件?

Iphone 当用户在UIView之外进行触摸时,如何处理事件?,iphone,objective-c,ios,sdk,Iphone,Objective C,Ios,Sdk,我的iOS应用程序中有一个自定义弹出菜单。它是带有按钮的UIView。当用户在该视图之外进行触摸时,我如何处理事件?我现在想隐藏菜单 一个想法是拥有一个不可见的视图(uicontrol),该视图与保存此自定义弹出窗口的屏幕一样大 将其置于全屏透明视图中,并处理触摸操作。您应该创建一个占据整个屏幕的自定义ui按钮。然后将子视图添加到该按钮的顶部。然后,当用户点击子视图外部时,他们将点击按钮 例如,使按钮如下所示: UIButton * button = [UIButton buttonWithTy

我的iOS应用程序中有一个自定义弹出菜单。它是带有按钮的UIView。当用户在该视图之外进行触摸时,我如何处理事件?我现在想隐藏菜单

一个想法是拥有一个不可见的视图(uicontrol),该视图与保存此自定义弹出窗口的屏幕一样大

将其置于全屏透明视图中,并处理触摸操作。

您应该创建一个占据整个屏幕的自定义
ui按钮。然后将子视图添加到该按钮的顶部。然后,当用户点击子视图外部时,他们将点击按钮

例如,使按钮如下所示:

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(yourhidemethod:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"" forState:UIControlStateNormal];
button.frame = self.view.frame;
[self.view addSubview:button];
(其中
yourhidemethod:
是删除子视图的方法的名称。)然后将子视图添加到它的顶部


更新:看起来你想知道如何检测触摸在视图中的位置。以下是您要做的:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{   
  UITouch *touch = [touches anyObject];
  CGPoint touchPoint = [touch locationInView:self]; //location is relative to the current view
  // do something with the touched point 
}

听起来,从UIControl而不是UIView派生菜单会更好。这将简化触摸处理,在这种情况下,您所要做的就是为UIControlEventTouchUpOutside设置目标和操作。目标可能是菜单本身,操作将隐藏或关闭菜单。

哦,谢谢。但我不知道如何处理视图中的触摸。有人能帮我吗?你不需要手动触摸就能得到你想要的东西。在该全屏视图中,您还可以添加一个由“[UIButton Button WithType:UIButtonTypeCustom]”创建的
UIButton
实例。在这之后,您需要做的就是添加控制器(或您用来处理此菜单的任何东西)作为此按钮的目标,如
[按钮添加目标:自我操作:@selector(transparenview tapped:)forControlEvents:UIControlEventTouchUpInside]
。我已经询问了手动触摸处理的确切情况。你能给我一些关于这个问题的信息或文档链接吗?@miksayer:我在回答中添加了信息。理想情况下,我列出的第一种方式应该是这样做的方式,不需要检测触摸的确切位置。