最近做了一个便签类的app,主要是为了演练rn开发技术。其中有一个搜索的功能.
在此功能实现过程中发现一个问题:
- 比如我输入中国,每次回调到的text就是中g-> 中gu 这样,不方便用来做搜索的key了。
- (void)searchTextFieldDidChange:(UITextField *)textField
{
NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式
if (![ChineseInclude isIncludeChineseInString:self.searchField.text] && [self.searchField.text length] < 2)
{
// 少于2个的英文字符,不启动搜索; 当文字清空时,仅显示默认接待人。
if ([self.searchField.text length] == 0)
{
self.matchedReceivers = [self selectedTypeDefaultReceivers];
[self.popupList reloadData];
}
return;
}
if ([lang isEqualToString:@"zh-Hans"])
{
// 简体中文输入,包括简体拼音,健体五笔,简体手写
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition* selectionStart = selectedRange.start;
UITextPosition* selectionEnd = selectedRange.end;
NSInteger length = [textField offsetFromPosition:selectionStart toPosition:selectionEnd];
if (length != 0)
{
return;
}
else
{
// DDLogInfo(@"searchTextFieldDidChangeInReal ,%@",self.searchField.text);
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doTheSearching) object:nil];
[self performSelector:@selector(doTheSearching) withObject:nil afterDelay:0.5];
}
}
else
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doTheSearching) object:nil];
[self performSelector:@selector(doTheSearching) withObject:nil afterDelay:0.5];
}
}