好的,开始我的问题,下面是 Spotify 应用程序已经解决的问题的一些截图:
Spotify 的第 1 步:标准 UISearchBar 未处于编辑模式。
Spotify 的第 2 步:UISearchBar 现在处于编辑模式。输入搜索词。取消按钮从右侧滑入,出现清除按钮(灰色x)。
Spotify 的第 3 步: 按下取消按钮;键盘滑出,搜索栏不再处于编辑模式。搜索词保留,灰色 x 按钮现在隐藏。
目前,按下我的取消按钮时会触发以下代码:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
[searchBar resignFirstResponder];
[searchBar setShowsCancelButton:NO animated:YES];
}
结果是:
我的第 3 步:搜索栏现在不处于编辑模式。取消按钮和键盘已滑出。搜索字词保留,但灰色 x 也保留。
所以,我的问题是:考虑到 -resignFirstResponder
(和 -endEditing:
,仅供引用)不隐藏灰色 x 按钮当搜索栏中输入了文本时,如何隐藏它?
再次感谢 friend 们。
最佳答案
问题是 UISearchBar 没有公开它的文本字段,而是管理文本字段本身的属性。有时,属性的值不是您想要的。
例如,在我自己的应用中,我希望搜索栏的键盘样式使用透明警报样式。
我的解决方案是遍历搜索栏的 subview ,直到找到文本字段。然后,您应该能够设置 clearButtonMode
属性,使用类似 UITextFieldViewModeWhileEditing
的参数作为参数。
这应该使清除按钮仅在编辑文本字段时显示。
您想在 viewDidLoad
或其他早期执行此操作,所以它在您开始使用它之前设置(但在搜索栏初始化之后。
for (UIView *subview in searchBar.subviews)
{
if ([subview conformsToProtocol:@protocol(UITextInputTraits)])
{
[(UITextField *)subview setClearButtonMode:UITextFieldViewModeWhileEditing];
}
}
关于iphone - 点击取消按钮时,移除 UISearchBar 右侧的清除按钮(灰色 x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052343/