2011-04-02 26 views
5

我遇到了最奇怪的顯示錯誤與我的UISearchBar
這是我的代碼,完美地在另一個應用程序。 (我在代碼中創建搜索欄是因爲xib文件不可行。)UISearchBar顯示錯誤:文本太離開了,重疊放大鏡圖標

searchBar = [[UISearchBar alloc] initWithFrame: 
    CGRectMake(0, 0, self.tableView.frame.size.width, 44)]; 
searchBar.delegate = self; 
searchController = [[UISearchDisplayController alloc] 
        initWithSearchBar:searchBar contentsController:self]; 
searchController.delegate = self; 
searchController.searchResultsDataSource = self; 
searchController.searchResultsDelegate = self; 
self.tableView.tableHeaderView = searchBar; 

搜索功能等工作正常。但奇怪的是,在搜索欄看起來像這樣,無論是設備和模擬器上:

UISearchBar with display bug

  • 佔位符字符串不應該存在,但進一步的權利。
  • 當我輸入搜索文本時,它也開始太左,顯示放大鏡圖標。
  • 此外,將searchBar.placeholdersearchBar.prompt設置爲@""nil不會刪除此「搜索」佔位符。 (然而,
    searchBar.placeholder = @"FooBar";
    會,但仍然在錯誤的位置顯示「FooBar的」。
  • 最後,我覺得很奇怪的是,字符串「搜索」雖然我已經將語言設置爲別的東西(比方說,德國)。

任何幫助嗎?的最緊迫的問題是文本得到了正確的。

+0

我剛剛注意到右側的索引標題(可以看到圖像中的「A」和搜索符號)自動將搜索框的右邊緣向左移動。也許它也將佔位符/搜索字符串移動了相同的距離(儘管它不應該)? – Mundi 2011-04-04 21:07:27

+0

刪除索引標題沒有修復它。 – Mundi 2011-04-05 07:27:12

+0

我的應用程序出現同樣的問題。我以前的版本沒問題。但是,它剛剛發生。我仍在尋找解決方案。順便說一句,我的searchBar是在XIB中定義的。 – RoIT 2011-04-19 02:19:33

回答

19

這種行爲可以通過重寫或者(CGRect)editingRectForBounds:(CGRect)bounds- (CGRect)textRectForBounds:(CGRect)bounds引起的。你有過這樣的改變無論是那些UITextField類別在您的應用程序的其他地方?這樣做的目的可能是將填充添加到文本字段(可以使用不可見的leftView來完成)。在這種情況下,您的自定義「填充」正在應用於UISearchBar文本字段。在UITextField

這樣的類別也將導致你的應用程序,同時初始化使用UITextField框架類,如MFMailComposeViewController崩潰,所以它是有幾個原因是一個壞主意。

+0

如果我刪除它,那麼整個項目將受到影響。是否有可能爲特定類設置「textRectForBounds」爲'0'?或任何其他解決方案。 – 2015-12-10 13:27:48

相關問題