ios - uisearchbar 上的清除按钮根本不起作用

标签 ios objective-c iphone uikit uisearchbar

我以编程方式创建了一个搜索栏,并使用以下代码将其添加到我的 View 中:

- (void)viewDidLoad
{
    searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(xPositionForSearchBar, yPositionForSearchBar, widthForSearchBar, heightForSearchBar)];
        UIView *bg = [[searchBar subviews] objectAtIndex:0];
        searchBar.delegate = self;
        searchBar.placeholder = @"Search record";
        for(UIView *view in searchBar.subviews){
            if([view isKindOfClass:[UITextField class]]){
                UITextField *tf = (UITextField *)view;
                tf.delegate = self;
                break;
            }
        }
        [bg removeFromSuperview];
        [self.view addSubview: searchBar];
}

代码是用 UISearchBarDelegate 和 UITextFieldDelegate 实现的。

我试过用

- (void)searchBarCancelButtonClicked:(UISearchBar *)aSearchBar
{
    NSLog(@"cancel clicked");
    searchBar.text = @"";
    [aSearchBar resignFirstResponder];
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    NSLog(@"clear");
    [self performSelector:@selector(searchBarCancelButtonClicked:) withObject:searchBar afterDelay: 0.1];
    return YES;
}

然而,当我点击“清除按钮”时,搜索栏内的文本根本没有被清除——一个里面有“X”的圆圈。

清除按钮在我在 IB 中实现时有效。想知道为什么?

请指点,非常感谢。

最佳答案

如果您将搜索栏放置在父 View 的边界之外,则可能会发生这种情况。然后,触摸不会正确地传递到您的 searchBar。这也会影响复制和粘贴等文本编辑控件。

关于ios - uisearchbar 上的清除按钮根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12292471/

相关文章:

ios - 从 xib 文件启动 APP 时出错

iphone - 需要对 iphone 中的术语进行解释

iphone - 使用Xcode播放随机声音

ios - View Controller URL 请求和连接正确完成后崩溃

php - PHP 加密与 iOS 和 .NET 的区别

objective-c - 用于解析化学式的 RegEx

ios - Objective-C 中计算 float 的奇怪值

iphone - 无法通过 Xcode Organizer/iTunes 安装 iPhone 应用程序存档

ios - swift 4 删除删除线

ios - 跳过 nil 值并继续执行其余代码