我以编程方式创建了一个搜索栏,并使用以下代码添加到我的视图中:
- (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中实现它时,清除按钮有效。想知道为什么?
请多多建议,非常感谢。
答案 0 :(得分:4)
如果将搜索栏放在父视图的边界之外,可能会发生这种情况。然后,触摸不会正确传递到您的searchBar。这也会影响文本编辑控件,如copy&糊。
答案 1 :(得分:0)
我检查过你的代码,它在设备和模拟器上运行良好。