使用iPhone SDK 3.0,我希望允许带有(可选)完成选项的文本输入,这些选项在出现输入时出现,即也允许自由格式输入。因此我使用UISearchBar(具有文本更改事件)和UISearchDisplayController来呈现选项。

问题是我想要DONE按钮说DONE而不是SEARCH,但我找不到设置方法。很明显,我觉得我遗漏了一些东西,或者SDK API的Interface Builder会有一些属性要设置。

我已经看到其他应用程序(在商店中)已经达到了我想要的结果(自由格式输入,完成,完成按钮)所以也许有一种我缺少的替代方法。提前感谢任何指示。

有帮助吗?

解决方案

+1对于wal的答案,但为了安全起见,并在进一步版本中对视图层次结构中的可能更改做出适当的反应,请考虑使用以下代码:

NSArray *subviews = [<searchBar> subviews] ;
for(id subview in subviews) {
    if([subview isKindOfClass:[UITextField class]]) {
        [(UITextField*)subview setReturnKeyType:UIReturnKeyDone];
    }
}

其他提示

只需要实现这一点,在任何地方找不到任何好的答案......所以我想我会提供一些见解。单步执行调试器并深入了解UISearchBar就很明显了。我刚刚在uisearchbar子视图中找到了UITextView,那时你应该能够在UITextView上设置return键类型。

Psuedocode- UISearchBarObject.SubViewAtIndexOfUITextField.ReturnKeyType = UIReturnKeyType.Done

将此代码放在viewDidLoad中。

- (void)viewDidLoad {
...

NSArray *subviews = [self.searchDisplayController.searchBar subviews] ;
UITextField *searchField = [subviews objectAtIndex:([subviews count]-2)];
[searchField setReturnKeyType:UIReturnKeyDone];

...
}

奇怪的是,UISearchBar应该像UITextField和UITextView那样支持UITextInputTraits接口(它没有在文档中说明),因此应该有 returnKeyType 。无论如何我都会尝试。

如果没有,可能是UISearchBar使用的其中一个对象有此选项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top