开发者

iphone - Search button on a UISearchBar

开发者 https://www.devze.com 2023-01-07 11:58 出处:网络
I have a search functionality using UISearchBar that occurs on-the-fly, so I think it would be mor开发者_C百科e obvious to replace that \"Search\" button on the keyboard with \"Done\".

I have a search functionality using UISearchBar that occurs on-the-fly, so I think it would be mor开发者_C百科e obvious to replace that "Search" button on the keyboard with "Done".

Is there a way to do that?

thanks


You can change the keyboardType property of your UISearchBar object. However, there is not a way to change the returnKeyType directly. You may be able to filter down and change it manually. Check the documentation for UISearchBar and see if you can find returnKeyType as that is what you are looking for.


I accomplish it this way:

// --   Basic UISearchBar setup.
self.theSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,320,38)];
[self.theSearchBar setDelegate:self];
[self.view addSubview:self.theSearchBar];

// --   Customize the returnKeyType of the search bar's nested UITextField.
UITextField *searchBarTextField = [[self.theSearchBar subviews] objectAtIndex:1];
searchBarTextField.returnKeyType = UIReturnKeyGo;

Hope that is helpful. This approach (i.e. grabbing a subview by index) may break in the future, but it works fine for now.


for (UIView *view in _searchBar.subviews){
            if ([view isKindOfClass:[UITextField class] ]) {
                UITextField *searchTf = (UITextField *)view;
                searchTf.returnKeyType = UIReturnKeyDone;
            }
}


This is working for iOS 6

UITextField *searchBarTextField = [[searchBarObj subviews] objectAtIndex:1];
    searchBarTextField.returnKeyType = UIReturnKeyDefault;

    [searchBarTextField setEnablesReturnKeyAutomatically:NO];

This is working for iOS 7

for (UIView *subview in self.searchBar.subviews)
{
    for (UIView *subSubview in subview.subviews)
    {
        if ([subSubview conformsToProtocol:@protocol(UITextInputTraits)])
        {
            UITextField *textField = (UITextField *)subSubview;
            [textField setKeyboardAppearance: UIKeyboardAppearanceAlert];
            textField.returnKeyType = UIReturnKeyDone;
            break;
        }
    }
}


Don't rely on it being the second subview, use isKindOfClass: method to check. It will be more iOS update proof that way.

for (UIView *subview in self.theSearchBar.subviews) {
    if ([subview isKindOfClass:[UITextField class]]) {
        [(UITextField *)subview setReturnKeyType:UIReturnKeyGo];
        break;
    }
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号