gpt4 book ai didi

ios - 如何触发 UISearchBar 委托(delegate)单次?

转载 作者:行者123 更新时间:2023-11-29 10:26:22 28 4
gpt4 key购买 nike

当用户在 uisearchbar 中键入文本时,我正在过滤一个数组,但问题是我有一个警报处理程序,每次调用委托(delegate)时都会触发该处理程序,但我希望警报出现只有一次没有多次......代码如下

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



if(searchText.length == 0)
{
_isFiltered = FALSE;
}
else{
// NSPredicate *resultPredicate=[NSPredicate predicateWithFormat:@"(SELF.name contains[cd] %@)or(SELF.rank contains[cd] %@)or(SELF.score contains[cd] %@)",searchText,searchText,searchText];
NSPredicate *resultPredicate=[NSPredicate predicateWithFormat:@"(SELF contains[cd] %@)",searchText];
self.filteredTableData = [self.searchItemsArray filteredArrayUsingPredicate:resultPredicate];
NSLog(@"Predicated array %@", self.filteredTableData);
self.isFiltered = YES;
if (self.filteredTableData.count == 0) {
[[CLAlertHandler standardAlertHandler]showAlert:@"No match found!" title:AppName];
[self.searchTableView reloadData];


}

}
//[self.searchTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
[self.searchTableView reloadData];
}

最佳答案

每次调用委托(delegate)方法时,使用-[NSNotification enqueueNotification…] 向自己发送通知,优先级为NSPostWhenIdle(例如)和一个合并掩码.这将合并这些通知并在系统空闲时触发它们,在这种情况下,您可以在用户未直接输入时继续工作。

在你的实现文件中:

const NSString *myNotificationName = @"kMyNotificationName";

viewWillAppear 或类似的地方:

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleSearchFieldUpdate:)
name:myNotificationName object:self];

在委托(delegate)方法中:

[[NSNotificationQueue defaultQueue] enqueueNotification:[NSNotification notificationWithName:myNotificationName object:self]
postingStyle:NSPostWhenIdle
coalesceMask:NSNotificationCoalescingOnName
forModes:nil];

作为一个新的类方法:

- (void)handleSearchFieldUpdate:(NSNotification *)notification {
.. do your work ..
}

最终结果是每次用户停止输入时都会调用您的选择器 handleSearchFieldUpdate

关于ios - 如何触发 UISearchBar 委托(delegate)单次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31986071/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com