我正在为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)
这给出了类似的结果.
有任何想法吗?
干杯埃里克
您正在访问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,或者不要求始终启用搜索按钮(例如使用"取消"按钮).
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |