2012-05-22 107 views
2

在我的iPad應用程序中,我有一個UITableView。表格的框架尺寸小於屏幕尺寸,所以爲了使搜索功能看起來不錯,我必須調整searchResultTableView的框架以適合我的TableView。我在我的UISearchDisplayDelegate的-searchDisplayController:willShowSearchResultsTableView:方法中執行此操作。UISearchDisplayController更改灰色視圖框架

一切正常,除了調光視圖。當我開始搜索調圖的寬度等於屏幕寬度:

dimming view takes whole screen

當我開始輸入搜索字符串或清晰的文本字段我searchResultsTableView適當調整大小,並一切正常,因爲它應該:

search results tableview is resizes properly

dimming view is resized as well

我試圖改變內部-searchDisplayControllerWillBeginSearch searchResultsTableView幀:方法USI ng此行

controller.searchResultsTableView.frame = myFrame; 

但它不起作用。除了實現我自己的搜索顯示控制器的任何建議?

+0

我有同樣的問題,你找到任何解決方案嗎? –

+0

解決! 參考此鏈接 http://stackoverflow.com/questions/5473579/uisearchdisplaydelegate-how-to-remove-this-opaque-view –

回答

1

我還需要更改調光視圖的框架,但出於不同的原因。在我的情況下,我創建了一個UISearchDisplayController和UISearchBar編程在一個普通的UIViewController而不是一個UITableViewController。我還使用了MFSideMenu,這增加了問題的複雜性。最終發生的事情是,調光視圖最初處於正確的位置,但下一次搜索結束時,調光視圖向左和向上移動了其大小的一半。鑑於UISearchDisplayController,您可以像這樣找到調光視圖。

for(UIView * v in controller.searchContentsController.view.subviews) 
{ 
    if([v isMemberOfClass:[UIControl class]]) 
    { 
     v.frame = newFrame; //This frame should account for the UISearchBar 
    } 
} 

要處理的初始不正確的幀,你應該在這個委託方法改變:

- (void) searchDisplayController:(UISearchDisplayController *)controller didShowSearchResultsTableView:(UITableView *)tableView; 

來處理不正確的框架上的任何後續清除你應該在這個委託方法改變:

- (void) searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView; 

注意:此解決方案運行searchContentsController的子視圖,這是我使用isMemberOfClass而不是isKindOfClass的原因之一( UIButton是UIControl的子類)。如果您將UIControl實例添加到您的視圖中,則可能需要進一步的區分(您可以使用標籤來幫助確定哪些是您的)。

相關問題