Ios 对于元素之外的事件,触碰是否在正确的控制事件之外?

Ios 对于元素之外的事件,触碰是否在正确的控制事件之外?,ios,swift,Ios,Swift,我刚刚进入快速开发阶段三天了,就连Xcode也是如此。我创建了一个名为EncounterMenu的UIView,当我单击菜单按钮时,它会出现在我的应用程序上。我的目标是在我做任何超出此范围的事情时关闭EncounterNu UIView。。这就是我目前所拥有的 override func viewDidLoad() { super.viewDidLoad() //create a button that spans the width & height of the e

我刚刚进入快速开发阶段三天了,就连Xcode也是如此。我创建了一个名为EncounterMenu的UIView,当我单击菜单按钮时,它会出现在我的应用程序上。我的目标是在我做任何超出此范围的事情时关闭EncounterNu UIView。。这就是我目前所拥有的

override func viewDidLoad() {
    super.viewDidLoad()

    //create a button that spans the width & height of the encounter menu
    let btnEncounterMenu = UIButton(type: UIButtonType.System) as UIButton
    btnEncounterMenu.frame = CGRectMake(0, 0, EncounterMenu.frame.width, EncounterMenu.frame.height)
    //(this is whats not working) If user clicks outside of button, call function "closeEncounter:"
    btnEncounterMenu.addTarget(self, action: "closeEncounter:", forControlEvents: .TouchUpOutside)
    //Add the button to the EncounterMenu
    EncounterMenu.addSubview(btnEncounterMenu)
}

func closeEncounter(sender: UIButton!) {
    EncounterMenu.hidden = true;

}
我尝试将其更改为TouchUpInside,当我在EncounterNu UIView中单击时,它工作了,所以我认为它应该和TouchUpOutside一样简单


任何关于我做错了什么或我如何才能完成我试图做的事情的指示?

外部润色将不起作用,因为您需要先按菜单,然后将手指拖到外部进行注册。相反,最简单的方法是创建一个与视图大小相同的按钮,在按钮触地事件中,启动关闭菜单。只需确保这个大按钮位于视图的最后面,其他一切都建立在它上面。

哇,好吧,我没意识到touchUpOutside是这样工作的。希望有一个更漂亮的解决方案,但听起来它会很好的工作!当我有机会的时候,我会确认答案。还有其他方法可以做,比如视图上的触控端事件,但是你说你已经3天了,我不想给你带来任何复杂的东西。如果你有更专业的方法,那就去做吧。我已经编程了大约8年了:),只是习惯了mac&xcode,快速回顾我的代码,在viewcontroller类中,我会覆盖touchesEnded函数,在那里,如果它是活动的,就关闭覆盖