2012-08-29 114 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。您必须继承搜索栏的子类。