2013-08-23 32 views
1

我正在構建一個菜單作爲UIControl的子類,當用戶觸摸它時會打開,如果用戶沒有選擇其中一個選項,它將關閉。UIControl軌跡觸及其視圖

我正在尋找一種方式,當用戶觸摸之外,這樣我可以關閉菜單

回答

0

把一個看你的菜單,涵蓋設備與清晰的彩色背景的整個區域的後面跟蹤。當你的菜單打開時,使該視圖可見。因爲它與您的設備具有相同的高度和寬度,只要您在菜單外單擊,就可以使用TapGesture識別該視圖或使其成爲UIControl。比調用方法隱藏你的菜單和uiview。

希望這會有所幫助。

+0

嗯...我不認爲這就是我要找的。我期待檢測用戶何時與其他控件進行交互。如果我創建一個與框架大小相同的框架,它將不會傳輸觸摸。 –

0

我真正喜歡做的是製作一個覆蓋整個視圖的大按鈕,並將其放在菜單下方,或者任何我想要觸摸併發生的事情。某些應用程式

UIButton *bigBackButton = [[UIButton alloc]initWithFrame:self.view.frame]; 
    [bigBackButton addTarget:self action:@selector(backButtonSelected) forControlEvents:UIControlEventTouchDown]; 
    [bigBackButton setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]]; 
    [self.view addSubview:bigBackButton]; 

} 
- (void)backButtonSelected:(UIButton *)button { 
    //get rid of the button 
    [button removeFromSuperview]; 

    //do whatever else you need to do 
    [yourmenu dosomething]; 
} 

,我要讓按鈕黑暗和半透明突出菜單,任何其他。其他時候,我會使它幾乎看不見,像[UIColor colorWithWhite:1.0 alpha:0.01];

在你的菜單例程中,你可以添加這些相同的例程。您可以傳遞父視圖的框架,或者只是在layoutSubviews例程中查看它,如果菜單是UIView的子場景。

在layoutSubviews,補充一點:

UIButton *bigBackButton = [[UIButton alloc]initWithFrame:self.superview.frame]; 
    [bigBackButton addTarget:self action:@selector(backButtonSelected) forControlEvents:UIControlEventTouchDown]; 
    [bigBackButton setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.5]]; 
    [self.view addSubview:bigBackButton]; 

,然後把backButtonSelected方法在你的菜單類爲好。

+0

嗯....我想到了類似的東西,但我正在尋找它在我的菜單類的實現。這樣我就可以將它添加到我想要的任何視圖中,而不必擔心添加其他事物以使其工作。 –

+0

沒有理由不能將這些例程添加爲菜單類的一部分。 (見編輯) – HalR