我正在为iphone OS 3.1.3写作。我想从我的UISearchBar键盘中的搜索按钮一直启用搜索按钮。如果这是任何旧的UITextField(不是搜索栏),则属性将是enableReturnKeyAutomatically。
我尝试使用http://discussions.apple.com/thread.jspa?messageID=8457910
中给出的示例进行设置表明:
UITextField *searchTextField ;
searchTextField = [[searchBar subviews]objectAtIndex:0];
searchTextField.enablesReturnKeyAutomatically = NO ;
应该有效。
不幸的是它崩溃了:
2010-05-20 08:36:18.284 ARemote[5929:207] *** -[UISearchBarBackground setEnablesReturnKeyAutomatically:]: unrecognized selector sent to instance 0x3b31980
2010-05-20 08:36:18.284 ARemote[5929:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UISearchBarBackground setEnablesReturnKeyAutomatically:]: unrecognized selector sent to instance 0x3b31980'
我也试过
((UITextField *)[(NSArray *)[searchBar subviews] objectAtIndex:0]).enablesReturnKeyAutomatically = NO;</code>
其中给出了类似的结果。
有什么想法吗?
干杯 埃里克
答案 0 :(得分:7)
您正在访问UISearchBar的文档化视图层次结构。这可能会导致拒绝,但您的应用程序的行为将在固件升级时未指定。
这是一个例子。发布该回复后,UITextField仍然是搜索栏的第一个子视图。现在第一个子视图变成了UISearchBarBackground。
最小的变化是迭代整个视图层次结构并找到实际的UITextField。
for (id subview in searchBar.subviews) {
if ([subview respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)]) {
[subview setEnablesReturnKeyAutomatically:NO];
break;
}
}
但是为了向前兼容,最好使用UITextField而不是UISearchBar,或者不要求始终启用搜索按钮(例如使用“取消”按钮)。
答案 1 :(得分:1)
实际上你可以设置searchBar.enablesReturnKeyAutomatically = NO;