在UISearchBar上自动设置enableReturnKey

0 iphone uisearchbar

我正在为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 ;
Run Code Online (Sandbox Code Playgroud)

应该管用.

不幸的是它崩溃了:

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'
Run Code Online (Sandbox Code Playgroud)

我也试过了

((UITextField *)[(NSArray *)[searchBar subviews] objectAtIndex:0]).enablesReturnKeyAutomatically = NO;</code>
Run Code Online (Sandbox Code Playgroud)

这给出了类似的结果.

有任何想法吗?

干杯埃里克

ken*_*ytm 7

您正在访问UISearchBar的文档化视图层次结构.这可能会导致拒绝,但您的应用程序的行为将在固件升级时未指定.

这是一个例子.发布该回复后,UITextField仍然是搜索栏的第一个子视图.现在第一个子视图变成了UISearchBarBackground.

最小的改变是迭代整个视图层次结构并找到实际的UITextField.

for (id subview in searchBar.subviews) {
   if ([subview respondsToSelector:@selector(setEnablesReturnKeyAutomatically:)]) {
      [subview setEnablesReturnKeyAutomatically:NO];
      break;
   }
}
Run Code Online (Sandbox Code Playgroud)

但是为了向前兼容,最好使用UITextField而不是UISearchBar,或者不要求始终启用搜索按钮(例如使用"取消"按钮).