2011-05-18 215 views
0

嘿傢伙,所以我在我的視圖中有這個搜索欄以及它下面的許多按鈕。因此,當點擊搜索欄時,會彈出一個鍵盤,但是我希望用戶能夠點擊搜索欄下方和鍵盤上方的任何位置以退出搜索模式。我已經清理了一下,發現了一個解決方案,建議我創建一個不可見的按鈕,它可以攔截觸摸事件,我可以使用它來從搜索欄中退出第一響應者狀態。當我不需要它時,我只能隱藏/禁用按鈕,以便它下面的按鈕可以正確地點擊?錯誤。 setHidden也不setEnabled:沒有伎倆。下面是相關代碼:使用堆疊UIButtons

//touch event on button outsideSearchBarButton which is invisible 
- (IBAction)selectOutsideSearchBar:(id)sender { 
    NSLog(@"Selected outside search bar"); 
    [searchBar resignFirstResponder]; 
    [outsideSearchBarButton setEnabled:NO]; 
    [outsideSearchBarButton setHidden:YES]; 
} 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)aSearchBar { 
    NSLog(@"searchbarTextDidBeginEditing"); 
    [outsideSearchBarButton setHidden:NO]; 
    [outsideSearchBarButton setEnabled:YES]; 
} 

設置按鈕來禁用或通過筆尖文件隱藏不幫我。或者按鈕從不存在(我不能在搜索欄和鍵盤之間點擊並讓鍵盤消失)或者始終存在(我無法點擊這個不可見按鈕下方的任何按鈕)。任何幫助讚賞。提前致謝!

回答

2
//touch event on button outsideSearchBarButton which is invisible 
- (IBAction)selectOutsideSearchBar:(id)sender { 
    NSLog(@"Selected outside search bar"); 
    [searchBar resignFirstResponder]; 
    outsideSearchBarButton.userInteractionEnabled = NO; 
} 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)aSearchBar { 
    NSLog(@"searchbarTextDidBeginEditing"); 
    outsideSearchBarButton.userInteractionEnabled = YES; 
} 

執行此操作。

+0

是的,這是做的伎倆,顯然我的舊代碼工作以及...我意識到我愚蠢沒有連接我的隱形按鈕到IBOutlet變量outsideSearchBarButton,因此修改按鈕的代碼沒有做任何事情。所以我的舊代碼確實有效,但我覺得這是一個更優雅的解決方案,這就是爲什麼我將其標記爲答案。 – Stunner 2011-05-18 05:37:07

1

轉到界面構建器並選擇搜索過程中要移除鍵盤的按鈕,然後從上述菜單中選擇佈局並選擇發回。然後在巡視窗口中將按鈕樣式設置爲自定義。

希望這有助於你.......

+0

+代表描述,我不得不選擇按鈕樣式自定義,我已經知道,但我認爲這可能是有用的其他人。 – Stunner 2011-05-18 05:38:16