2010-08-25 41 views
9

在我的應用程序中,當我點擊一個添加到視圖上的UISearchbar時,我需要做一些活動,即推動otherview控制器。當我點擊UISearchBar時會調用哪個事件

什麼是達到此目的的最佳方法。

由於事情之一是,當我們點擊的UISearchBar「searchBarTextDidBeginEditing」被解僱,但我的情況,當我推視圖控制器「searchBarTextDidBeginEditing」回來searchBarTextDidBeginEditing再次調用,所以看起來它不是推圖的理想場所控制器。

這是maincontroller

// Search bar 
    iSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, 40)]; 
    iSearchBar.delegate = self; 
    iSearchBar.showsCancelButton = NO; 
    iSearchBar.autocorrectionType = UITextAutocorrectionTypeNo; 
    iSearchBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [self addSubview:iSearchBar]; 

當我點擊的UISearchBar然後調用

- (void)searchBarTextDidBeginEditing:(UISearchBar*)searchBar 
    { 
    [self ShowMySearch]; 
    } 

在ShowMySearch,我推一些其他的控制器可以說searchcontroller當彈出這個searchcontroller和回來maincontroller 「searchBarTextDidBeginEditing」再次調用,searchcontroller被再次推送並導致問題。這種行爲只會出現在3.1.1

感謝,

薩加爾

+0

更多的信息會有幫助 – 2010-08-25 14:06:47

+0

更多的信息被添加。 – 2010-08-26 05:45:33

回答

15

我覺得叫[自我ShowMySearch]在 「searchBarTextDidBeginEditing」 是有點太晚了。 我想,「searchBarTextDidBeginEditing」是在響應搜索欄成爲第一響應者時調用的。由於它是搜索控制器被推動時的第一響應者,所以當你的搜索控制器被停用時它可能再次成爲第一響應者...因此再次調用「searchBarTextDidBeginEditing」。

要做到這一點,我會用:

  • (BOOL)searchBarShouldBeginEditing:(*的UISearchBar)搜索欄

搜索欄被點擊後,此方法被調用,但它成爲了前急救人員。如果您返回NO,它將永遠不會成爲第一響應者:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar { 
    [self ShowMySearch]; 
    return NO; 
} 

讓我知道這是否可行!

+0

謝謝埃裏克。它完美的作品。 – 2010-08-26 08:56:11

+0

感謝Eric Morand。這個對我有用 – jpd 2013-07-25 07:09:16

相關問題