2013-02-03 67 views
1

我試圖使UISearchBar在其變爲活動狀態時展開。UISearchBar動畫問題

我遇到的問題是搜索欄只在用戶輸入至少2個字符的文字後才展開。在此之前,它已被固定。我在那裏和作品增添了searchBar.alpha =0.7;,所以這種方法似乎被立即調用爲用戶觸摸搜索條

- (void)searchDisplayControllerDidBeginSearch : (UISearchDisplayController *)controller 
{ 
    [UIView animateWithDuration:0.2 animations:^{ 
     self.searchBar.frame = CGRectMake(0,10,250,self.searchBar.frame.size.height); 
     // self.searchBar.frame = CGRectMake(70, 10, 250, 40); 
     searchBar.alpha =0.7; 
     [searchBar layoutSubviews];    
    }];  
} 

不知道如果我將它設置的方式有問題。下面是我有:

.h

@property (weak, nonatomic) IBOutlet UISearchBar *searchBar; 
.m

@synthesize searchBar; 

,並在StoryBoard

enter image description here

感謝您的幫助。

回答

1

我的動畫UISearchBar大小和位置有類似的問題,事實證明這個問題與iOS 6中的自動佈局有關。我的代碼中的動畫塊與您的動畫塊完全相同,除了我從 - void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar。

我通過日誌發現searchBar.frame在我的搜索欄子類中被覆蓋爲layoutSubviews。這種問答&一個解釋「layoutSubviews」關於iOS 6的行爲有所不同(Opting out of auto layout for a single view?

基礎上怎麼樣,如果你正在爲iOS 6中,以動畫的UISearchBar框的選項似乎不是禁用自動佈局或實例化UISearchBar以編程方式。我選擇了後者,它工作。

P.S:如果你去禁用自動佈局,您可以禁用它爲整個故事板或僅有的.xib(詳見這裏:Enabling auto layout in iOS 6 while remaining backwards compatible with iOS 5

希望這有助於。

1

嘗試製作UISearchBar類的代理(UISearchBarDelegate)並將您的動畫代碼粘貼到- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar方法實現中。我認爲這應該有所幫助。

+0

謝謝!動畫和擴大searchBar。鍵盤現在不顯示,雖然... – hanumanDev

+0

你應該'返回YES;'在該方法的動畫代碼後,它會顯示鍵盤。 – Randex