iPhone-更改UISearchDisplayController“;取消“;按钮文本

iPhone-更改UISearchDisplayController“;取消“;按钮文本,iphone,uibutton,uisearchdisplaycontroller,Iphone,Uibutton,Uisearchdisplaycontroller,排序问题: 是否有办法将UISearchDisplayController中的“取消”按钮文本更改为“完成”或“关闭” 理由: 我有一个包含选项列表的UITableView,每个选项都可以选中或取消选中 我想通过这些选项启用搜索,因此我创建并添加了一个UISearchDisplayController 用户将搜索一个项目,然后对搜索结果中的项目执行操作(即选择/取消选择某些项目) 完成后,用户将返回上一个(未搜索)选项列表 问题是,关闭UISearchDisplayController的唯一方法

排序问题: 是否有办法将
UISearchDisplayController
中的“取消”按钮文本更改为“完成”或“关闭”

理由:

我有一个包含选项列表的
UITableView
,每个选项都可以选中或取消选中

我想通过这些选项启用搜索,因此我创建并添加了一个
UISearchDisplayController

用户将搜索一个项目,然后对搜索结果中的项目执行操作(即选择/取消选择某些项目)

完成后,用户将返回上一个(未搜索)选项列表

问题是,关闭
UISearchDisplayController
的唯一方法是按下“取消”按钮。但是,“取消”在这里是错误的,因为在搜索栏中执行的操作将被存储


因此,有没有办法将“取消”按钮文本更改为“完成”或“关闭”?

我找到了一种方法,在搜索栏的代理中,创建一个空动画,然后在一小段时间后,更改按钮上的内容,这可能是因为在调用代理后不久,取消按钮就会被设置动画,因此,在此之前,您无法抓住并更改它:

-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController*)controller {
[UIView
     animateWithDuration:0.05 animations:^{} completion:^(BOOL finished){

        for (UIView *possibleButton in controller.searchBar.subviews)
        {
            if ([possibleButton isKindOfClass:[UIButton class]])
            {
                UIButton *cancelButton = (UIButton*)possibleButton;

                //TODO:
                // do things with button here...
            }
        }
     }
     ];
}

请注意,您可能不应该这样做,而应该只使用色调,因为这可能是不允许的,并且可能会导致您的应用被拒绝。