iOSはUICTextFieldを使ってユーザーが入力した後に「リアルタイム検索」機能を実現します。
2490 ワード
注:CSDNのコードブロックは少しすくいます。ブラウザのウィンドウが狭いなら、一行のコードが二行の位置を占めています。後ろのコードが見えなくなります。ブラウザのウィンドウを大きくしてもいいです。
UIさんが設計した検索枠はいつも多種多様で、システムの検索枠はいつも私達の需要を満足させられないので、特別に注文したいです。しかし、
これでは私たちを困らせますか?もちろん違います。方法はやはりあります。
ソリューション
まず検索ボックスをカスタマイズしてスタイルを変えてから、
1.5秒後に検索を行い、1.5秒後に入ってきた入力回数と現在の入力回数が一致したら、ユーザは1.5秒でもう新しい内容が入力されていないということです。新しいデータに加えます。この時間は自分で調整できます。
ここでiOSについてUITTextFieldを使ってユーザーが入力した後に「リアルタイム検索」機能を実現する文章を紹介します。もっと関連のios UITTextFieldはユーザー定義の検索ボックスを使ってリアルタイムで検索してください。以前の文章を検索したり、次の関連記事を引き続き閲覧してください。これからもよろしくお願いします。
UIさんが設計した検索枠はいつも多種多様で、システムの検索枠はいつも私達の需要を満足させられないので、特別に注文したいです。しかし、
UITextField
の複数のリピートのうち、検索時間をトリガするのに適したものは一つもない。UITextFieldTextDidChangeNotification
コールが頻繁すぎて、文字を入力するたびにインターフェースを調整するのはあまり適切ではないかもしれません。UITextFieldTextDidEndEditingNotification
は編集が終わった時だけ調整します。編集が終わるとキーボードが消えてしまうという意味です。あまり適切ではありません。これでは私たちを困らせますか?もちろん違います。方法はやはりあります。
ソリューション
まず検索ボックスをカスタマイズしてスタイルを変えてから、
UITextFieldTextDidChangeNotification
を待ち受けます。
- (void)textFieldDidChange{
if (self.searchDelegate && [self.searchDelegate respondsToSelector:@selector(customSearchBar:textDidChange:)]) {
[self.searchDelegate customSearchBar:self textDidChange:self.text];
}
}
使用
@property (nonatomic, strong) LGCustomSearchBar *searchBar;
@property (nonatomic, assign) NSInteger inputCount;
- (void)viewDidLoad {
[super viewDidLoad];
self.searchBar = [[LGCustomSearchBar alloc] initWithFrame:CGRectMake(20, 10, kScreenWidth-40, 36)];
self.searchBar.searchDelegate = self;
[self.view addSubview:self.searchBar];
}
- (void)customSearchBar:(LGCustomSearchBar *)searchBar textDidChange:(NSString *)searchText{
if (searchText.length == 0) {
[self searchKeyword:@(self.inputCount)];
}
else{
self.inputCount++;
[self performSelector:@selector(searchKeyword:) withObject:@(self.inputCount) afterDelay:1.5f];
}
}
- (void)searchKeyword:(NSNumber *)inputCount{
// 0 ,
if (inputCount.integerValue == self.inputCount && self.inputCount != 0) {
[self loadData];
}
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[self loadData];
return NO;
}
- (void)loadData{
self.inputCount = 0;
//
...
[self.tableView reloadData];
}
コアコード1.5秒後に検索を行い、1.5秒後に入ってきた入力回数と現在の入力回数が一致したら、ユーザは1.5秒でもう新しい内容が入力されていないということです。新しいデータに加えます。この時間は自分で調整できます。
[self performSelector:@selector(searchKeyword:) withObject:@(self.inputCount)
afterDelay:1.5f];
締め括りをつけるここでiOSについてUITTextFieldを使ってユーザーが入力した後に「リアルタイム検索」機能を実現する文章を紹介します。もっと関連のios UITTextFieldはユーザー定義の検索ボックスを使ってリアルタイムで検索してください。以前の文章を検索したり、次の関連記事を引き続き閲覧してください。これからもよろしくお願いします。