UISearchBar 问题中的取消按钮

Cancel Button in UISearchBar issue

我在我的应用程序中实现了带有自定义(本地化)标题的搜索栏。

第一次点击搜索时,它显示取消按钮如下:

第一次

第二次当我按下取消按钮并再次点击搜索栏时,它看起来不错。

我的代码

   - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{

    [searchBar setShowsCancelButton:YES animated:YES];


    UIButton *cancelButton;
    UIView *topView = search.subviews[0];
    for (UIView *subView in topView.subviews) {
        if ([subView isKindOfClass:NSClassFromString(@"UINavigationButton")]) {
            cancelButton = (UIButton*)subView;
        }
    }
    if (cancelButton) {
        [cancelButton setTitle:Localized(@"Cancel") forState:UIControlStateNormal];
    }

}

它对我有用:

if (cancelButton) {
    [cancelButton setTitle:Localized(@"Cancel") forState:UIControlStateNormal];
    [search setNeedsLayout];
    [search layoutIfNeeded];
}

尝试将 NSLocalizedString 设置为 UIAppearance:

[[UIButton appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:Localized(@"Cancel") forState:UIControlStateNormal];

swift

UIButton.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitle("v1_cancel", for: .normal)

(在现代 ios 中不再有效) 这个 Change UISearchBar cancel button text in iOS 8 是最新的

我已经翻译了 swift 4 中的 答案:

UIButton.appearance(whenContainedInInstancesOf: [UISearchBar.self]).setTitle("Cancel", for: .normal)