私のアプリには、1 つのメッセージを複数のユーザーに同時に送信するためのコンポーネントがあります。
Facebookのメッセージ作成と同様に実装したいと思います。ローカル通知で uitextfield を使用することで、UITableView を次のようにフィルター処理できます。
self.searchTextFieldObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:UITextFieldTextDidChangeNotification
object:self.searchTextView
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note) {
if ([self.displayArray count]) {
NSArray *tempUsersArray = nil;
NSArray *tempNonUsersArray = nil;
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fullName CONTAINS[cd] %@", self.searchTextView.text];
self.displayArray = [MyAddressBook sortedContacts:self.contacts];
if ([self.searchTextView.text length] > 0) {
tempUsersArray = [self.displayArray[0] filteredArrayUsingPredicate:predicate];
self.displayArray = @[tempUsersArray];
}
}
[self.tableView reloadData];
}];
これは期待どおりに機能します...テキストフィールドに入力を提供していると、テーブルがフィルタリングされます。私が実装したいのは、このアプローチです:
テーブル ビューを検索して 1 人のユーザーを選択すると、そのユーザーのニックネームがテキスト フィールドに挿入され、述語が空の文字列にリセットされるため、フィルタリングを再開できます。戻るボタンは既に挿入されている名前を選択し、2 回目のバックスペース タップでそれを削除する必要があります。
これについてしばらく考えていたのですが、思いついたのは、複数の要素を重ねて使用することだけでした。UITextView は、ユーザーが追加されるとフレームを変更します (UILabel のテキストのソースである配列に保存され、テキストビューのフレームを部分的に置き換えます) が、既に選択したユーザーを削除する可能性があったときに壁にぶつかりました。
別のアプローチや、私に役立つライブラリについて知っていれば、とてもうれしいです。