私も同じ問題を抱えていました。ボタンはありますが、titleColor は背景と同じです。私が修正したのは、検索バーのキャンセル ボタンのサブビューを検索し、ボタンのタイトルの色を別の色に設定することでした。キャンセル ボタンが表示された後にこれを設定することに注意してください。キャンセル ボタンが表示される前にビューが表示されません。私のコード:
[self.mySearchBar setShowsCancelButton:YES animated:YES];
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) {
for(id subview in [self.mySearchBar subviews])
{
if ([subview isKindOfClass:[UIButton class]]) {
[self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
}
}
} else {
for(id subview in [[[self.mySearchBar subviews] objectAtIndex:0] subviews])
{
if ([subview isKindOfClass:[UIButton class]]) {
[self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
}
}
}
また、iOS 7 では、キャンセル ボタンが検索バーの最初のサブビューに埋め込まれていることにも注意してください。以前の iOS 7 は、検索バーの直接のサブビューです。