我目前面临UISearchBar
与听写支持相关的问题。当搜索栏的文本发生变化时,我必须触发一些过滤逻辑。必须通过键盘输入或听写来触发此逻辑。
现在这是我的问题:如果我在搜索栏中结束听写,该textDidChange
方法会立即触发(在语音识别运行时)。识别完成后,使用正确的字符串再次触发该方法。
如何检测到方法的第一次调用是由语音识别的开始触发的?因为在这种情况下我必须避免执行我的逻辑。
我已经尝试检查searchText
传递给该方法的参数。但结果有点可疑。
如果我将此代码添加到searchBar:textDidChange:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
NSLog(@"SearchText [%@] - SearchTextLength [%i] - SearchTextEquals [%i]", searchText, searchText.length, [searchText isEqualToString:@""]);
}
我得到这个日志结果:
SearchText [] - SearchTextLength [1] - SearchTextEquals [0]
我被困在这一点上。怎么可能searchText
是 [](空)但长度为 1?是否有另一种方法来检测语音识别仍在运行?