核心搜索代码
搜索判断markedTextRange 然后根据搜索时间段 进行网络加载
- 实时搜索相关
@property(nonatomic,assign)NSTimeInterval lastTimeInterval;
@property(nonatomic,assign)NSTimeInterval maxTimeInterval;
@property(nonatomic,assign)BOOL inputing;
@property(nonatomic,strong)NSString *lastContent;
- 初始化
self.maxTimeInterval = 1.5;
self.lastTimeInterval = [NSString getCurrentTimeStamp];
self.inputing = NO;
<UITextFieldDelegate>
- (UITextField *)textField
{
if (!_textField) {
UITextField *tf = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 0, 0)];
[self addSubview:tf];
tf.textColor = kColor51;
tf.font = [UIFont systemFontOfSize:15*ADAPTER_WIDTH weight:UIFontWeightRegular];
tf.clearButtonMode = UITextFieldViewModeWhileEditing;
tf.keyboardType = UIKeyboardTypeDefault;//UIKeyboardTypeNumberPad UIKeyboardTypePhonePad电话板面 UIKeyboardTypeDecimalPad 小数点
tf.tintColor = kThemeColor;
tf.textAlignment = NSTextAlignmentLeft;
[tf addTarget:self action:@selector(addObserveSearchTF) forControlEvents:UIControlEventEditingChanged];
tf.secureTextEntry = NO;
tf.returnKeyType = UIReturnKeySearch;
tf.delegate = self;
_textField = tf;
}
return _textField;
}
- 搜索相关
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField.text.length == 0) {
[sharedKeyWindow showWarning:@"搜索内容不能为空"];
return NO;
}
//NSLog(@"搜索111");
//[sharedKeyWindow endEditing:YES];
!self.realTimeCallBlock ?: self.realTimeCallBlock (self.textField.text);
return YES;
}
- (void)addObserveSearchTF
{
if (self.textField.markedTextRange) {
return;
}
NSTimeInterval currentTimeInterval = [NSString getCurrentTimeStamp];
NSTimeInterval offsetTimeInterval = currentTimeInterval - self.lastTimeInterval;
if (offsetTimeInterval > self.maxTimeInterval && self.inputing == NO) {
self.inputing = NO;
self.lastTimeInterval = currentTimeInterval;
if (self.textField.text.length > 0) {
}
NSLog(@"搜索1:%@",self.textField.text);
//!self.realTimeCallBlock ?: self.realTimeCallBlock (self.textField.text);
} else {
self.inputing = YES;
[self performSelector:@selector(performHandleMethod) withObject:nil afterDelay:self.maxTimeInterval];
}
}
- (void)performHandleMethod
{
NSTimeInterval currentTimeInterval = [NSString getCurrentTimeStamp];
NSTimeInterval offsetTimeInterval = currentTimeInterval - self.lastTimeInterval;
if (offsetTimeInterval > self.maxTimeInterval && self.inputing == YES) {
if (![self.textField.text isEqualToString:self.lastContent]) {
self.lastContent = self.textField.text;
self.lastTimeInterval = currentTimeInterval;
self.inputing = NO;
if (self.lastContent.length > 0) {
}
NSLog(@"搜索2:%@",self.textField.text);
//!self.realTimeCallBlock ?: self.realTimeCallBlock (self.textField.text);
}
}
}
键盘类型
text.keyboardType = UIKeyboardTypeNumberPad;
typedef enum {
UIKeyboardTypeDefault, 默认键盘,支持所有字符
UIKeyboardTypeASCIICapable, 支持ASCII的默认键盘
UIKeyboardTypeNumbersAndPunctuation, 标准电话键盘,支持+*#字符
UIKeyboardTypeURL, URL键盘,支持.com按钮 只支持URL字符
UIKeyboardTypeNumberPad, 数字键盘
UIKeyboardTypePhonePad, 电话键盘
UIKeyboardTypeNamePhonePad, 电话键盘,也支持输入人名
UIKeyboardTypeEmailAddress, 用于输入电子 邮件地址的键盘
UIKeyboardTypeDecimalPad, 数字键盘 有数字和小数点
UIKeyboardTypeTwitter, 优化的键盘,方便输入@、#字符
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,
} UIKeyboardType;
网友评论