UISearchBar textDidChange没有触发

时间:2015-03-22 03:03:32

标签: ios iphone xcode

我是iOS编程的新手,我不确定为什么我的textDidChange函数没有触发。在网上搜索了一堆,但无法找出我的代码和其他人之间的不同之处。这是我的 .h .m 文件对于此视图控制器的样子:

CategoryTableViewController.h

#import <UIKit/UIKit.h>
#import <Parse/Parse.h>

@interface CategoryTableViewController : UITableViewController


@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnBack;
@property (weak, nonatomic) IBOutlet UISearchBar *txtSearchBar;

@property (strong,nonatomic) NSArray *allCategories;
@property (strong,nonatomic) NSMutableArray *filteredCategories;

//A stack containing the parent categories used to get to the current category.
@property (strong, nonatomic) NSMutableArray *parentCategories;

@end

CategoryTableViewController.m 的相关代码:

-(void)txtSearchBar:(UISearchBar*)txtSearchBar textDidChange: (NSString*)text
{

    //do something
}

我使用Xcode的ctrl + click + drag来创建对头文件中搜索栏的引用。我在textDidChange代码的开头放置断点和打印语句,但没有一个被调用。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

您需要设置txtSearchBar的delegate属性以使用委托方法。 确保添加

    self.txtSearchBar.delegate = self; 

在ViewDidLoad()

和委托方法

 - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{

    //Do something

    }

答案 1 :(得分:0)

如果您正在使用委托方法,请确保在需要调用委托的实例上设置委托属性,以便它知道有委托以及在何处发送操作。

如果您正在使用Interface Builder而不是委托,则需要创建IBAction函数,或者您可以使用UIControl的子类addTarget()方法为给定的事件类型创建回调。 / p>

答案 2 :(得分:0)

添加

self.txtSearchBar.delegate = self 
在viewDidLoad()中