美文网首页
TextField搜索核心代码

TextField搜索核心代码

作者: 守护地中海的花 | 来源:发表于2019-05-29 10:50 被阅读0次

核心搜索代码

搜索判断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;
 

猫猫学iOS之UITextField右边设置图片,以及UITextField全解

相关文章

网友评论

      本文标题:TextField搜索核心代码

      本文链接:https://www.haomeiwen.com/subject/vteetctx.html