2012-08-29 93 views
2

我已經創建了一個的UISearchBar,我要插入inputAccessoryView的視圖,但編譯器給了我這個錯誤:問題與的UISearchBar inputAccessoryView

分配給只讀屬性

爲什麼出現這種情況? :

@property(nonatomic,retain)IBOutlet UISearchBar *searchbar; 

@property (retain, nonatomic) IBOutlet UIView *keyView; 

self.searchbar.inputAccessoryView = keyView; 
+0

不要在iOS 6中不用擔心這將有可能 –

+0

我需要它的iOS 4和更高! :-S – Momi

+0

因此,子類是您唯一的選擇 –

回答

5

SearchBars裏面有一個UITextView,你可以用稍微骯髒的方式來查找它,並將inputAccessoryView設置爲它。我不知道這是否會工作,但它值得一試

UITextField *searchBarField = nil; 
for (UIView *subView in searchBar.subviews) { 
    if ([subView conformsToProtocol:@protocol(UITextInputTraits)]) { 
     searchBarField = (UITextField *)subView; 
     searchBarField.inputAccessoryView = ... 
     break; 
    } 
} 
+1

感謝它的工作! – Momi

+0

鬼鬼祟祟。你也可以使用'[subView isKindOfClass:[UITextField class]]'稍微清理一些條件。 – dooleyo

0

出現這種情況,因爲這個屬性是隻讀的,你不能簡單地分配「的UIView」。有關如何訪問此屬性的建議,請閱讀UISearchBar inputAccessoryView。您必須繼承搜索欄的子類。