Ios uisearchbar上的“清除”按钮完全不工作

Ios uisearchbar上的“清除”按钮完全不工作,ios,objective-c,iphone,uikit,uisearchbar,Ios,Objective C,Iphone,Uikit,Uisearchbar,我以编程方式创建了搜索栏,并使用以下代码将其添加到我的视图中: - (void)viewDidLoad { searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(xPositionForSearchBar, yPositionForSearchBar, widthForSearchBar, heightForSearchBar)]; UIView *bg = [[searchBar subviews] obje

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

- (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中实现clear按钮时,它会工作。不知道为什么


非常感谢您的建议。

我已经检查了您的代码,无论是在设备上还是在模拟器上都可以正常工作。

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

如果在任一委托方法上设置断点,是否有断点命中?否,它没有调用该方法是否允许编辑问题以显示实际将搜索栏添加到视图控制器的代码(例如“
UISearchDisplayController
”)?您正在以编程方式创建搜索栏。它是如何添加的?
[self.view addSubview:searchBar]将搜索栏添加到我的视图只是为了添加,文本只有在我按住x十字按钮至少1~2秒后才会清除。知道为什么吗?