2015-11-04 48 views
0

我在UISearchBarDelegate協議方法textDidChange中沒有執行的方法cancelPreviousPerformRequestsWithTarget有問題。iOS「cancelPreviousPerformRequestsWithTarget」在搜索字段委託方法中不起作用

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
    SEL updateSelector = @selector(updateTableViewWithSearchPhrase:); 

    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:updateSelector object:searchText]; 

    [self performSelector:updateSelector withObject:searchText afterDelay:0.5f]; 
} 

我連續5次點擊一個鍵盤按鈕連續5次,並且該方法連續調用5次。問題在哪裏,嗯?

回答

0

假設在您的測試中,搜索文本每次都不相同。所以取消請求將不匹配,因爲您尚未對該對象發出請求。

而是使用:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:updateSelector object:nil]; 

到通配符選擇和目標相匹配。

請注意,使用定時器比取消執行選擇器更好...