`
_wyh
  • 浏览: 60954 次
社区版块
存档分类
最新评论

使用UITextField实现搜索功能

    博客分类:
  • ios
阅读更多

    使用UISearchBar实现搜索功能时,搜索栏高度不易调整,外观也不易做成自己想要的样式,又不想使用太复杂的方法,而使用UITextField可以实现这些功能又非常简便,所以使用UITextField是个不错的选择。

     下面实现0-10000的数字搜索

1,在.h文件中实现UITableView的协议,用UITableView和UITextField共同实现搜索功能。

        

@interface ViewController : UIViewController < UITableViewDelegate, UITableViewDataSource>

 

2,定义全局变量,allNumberArr存储0-10000,filterNumberArr存储搜索过滤后的数组

@interface ViewController () {
    UITextField *searchTextField;
    
    NSMutableArray *allNumberArr;
    NSMutableArray *filterNumberArr;
    
    UITableView *searchTableView;
}

 

3,初始化allNumberArr和filterNumberArr中的数据

- (void)initialAllNumber {
    allNumberArr = [[NSMutableArray alloc] init];
    filterNumberArr = [[NSMutableArray alloc] init];
    
    for (int i = 0; i <= 10000; i++) {
        NSString *numberStr = [[NSString alloc] initWithFormat:@"%d", i];
        [allNumberArr addObject:numberStr];
        [filterNumberArr addObject:numberStr];
    }
}

 

4,初始化UITalbeView,设置委托

//在willDidLoad中调用
- (UITableView *)createTableViewWithFrame:(CGRect)frame {
    UITableView *tableView = [[UITableView alloc] initWithFrame:frame];
    tableView.delegate = self;
    tableView.dataSource = self;
    return tableView;
}

 

5,创建UITextField搜索栏和搜索栏所在的View,调整View的外观,作为搜索栏的外观。调整起来比较容易。在View中加入UITextField,加入文本修改事件。search图标自己找的

- (UIView *)createSearchViewWithFrame:(CGRect)frame {
    UIView *view = [[UIView alloc] initWithFrame:frame];
    view.layer.borderWidth = 1;
    view.layer.borderColor = [UIColor blueColor].CGColor;
    view.layer.cornerRadius = 20;
    
    return view;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
   
    [self initialAllNumber];
    
    UIView *searchView = [self createSearchViewWithFrame:CGRectMake(50, 40, self.view.frame.size.width - 100, 40)];
    [self.view addSubview:searchView];
    
    searchTextField = [[UITextField alloc] initWithFrame:CGRectMake(15, 3, searchView.frame.size.width - 50, searchView.frame.size.height - 6)];
    [searchTextField addTarget:self action:@selector(textFieldDidChange) forControlEvents:UIControlEventEditingChanged];
    [searchView addSubview:searchTextField];
    
    UIImageView *searchImgView = [[UIImageView alloc] initWithFrame:CGRectMake(searchView.frame.size.width - 40, 10, 20, 20)];
    searchImgView.image = [UIImage imageNamed:@"search"];
    [searchView addSubview:searchImgView];
    
    
}

 

6,编辑UITextField修改文本时的事件,当文本修改时,当allNumberArr中的数据包含searchTextField.text,将allNumberArr中的数据加入到filterNumberArr中,并刷新TableView.

- (void)textFieldDidChange {
    [filterNumberArr removeAllObjects];
    
    for (int i = 0; i < allNumberArr.count; i++) {
        if ([allNumberArr[i] containsString:searchTextField.text]) {
            [filterNumberArr addObject:allNumberArr[i]];
        }
    }
    
    [searchTableView reloadData];
}

 7,实现UITalbeViewDelegate和UITalbeViewDataSource

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return filterNumberArr.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *identifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
    }
    
    cell.textLabel.text = filterNumberArr[indexPath.row];
    
    return cell;
}

 实现结果为



 

0
0
分享到:
评论

相关推荐

    iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能

    在iOS开发中,使用UITextField来实现搜索功能是一种常见的做法,但是UITextField的回调函数中没有一个合适的触发搜索的时机。UITextFieldTextDidChangeNotification每输入一个字符都会调用,怕是不太合适,而...

    UITextfield

    在iOS开发中,`UITextField` 是一个至关重要的UI组件,它允许用户输入文本,并且广泛应用于各种场景,如登录、注册、搜索等。在标题提到的"炒股软件"上下文中,`UITextField` 可能被用来输入股票代码、设置价格预警...

    UITextField 文本字段控件-IOS开发

    为了实现更复杂的功能,可以设置UITextField的代理。遵循`UITextFieldDelegate`协议,然后设置`textField.delegate = self`。例如,可以使用`textFieldShouldReturn(_:)`方法处理回车键事件,通常用于提交表单。 在...

    swift-UITextField的分类一行代码搞定最大输入长度历史记录选中指定文字等等功能

    标题提到的"swift-UITextField的分类一行代码搞定最大输入长度历史记录选中指定文字等等功能",就是一种高效的方法来定制`UITextField`的行为,而无需编写大量的自定义代码。 首先,我们来讨论如何限制`UITextField...

    UITextField Demo实例

    首先,`UITextField`是UIKit框架的一部分,它继承自`UIView`,提供了基本的文本输入功能。创建`UITextField`通常有以下几种方式: 1. **代码创建**:在Objective-C中,你可以通过初始化方法来创建一个`UITextField`...

    通过UItextField自定义UISearchBar

    本教程将详细讲解如何通过`UITextField`来实现`UISearchBar`的自定义功能,以及如何利用`UITextField`的代理方法来处理用户输入和响应。 首先,我们来看一下`UISearchBar`的基本结构。`UISearchBar`由一个`...

    iOS中UITextField实现过滤选中状态拼音的代码

    本篇文章将详细讲解如何在iOS中使用`UITextField`实现这个功能。 首先,让我们了解问题的背景。在iOS的输入法中,当用户在`UITextField`中输入文字时,系统默认会提供智能拼音联想。这在某些场景下可能会导致未被...

    iphone 开发基础控件UITextField

    最后,不要忘记设置`UITextField`的代理,通过遵循`UITextFieldDelegate`协议,可以实现更多的功能,如验证输入、处理return键等。 总的来说,`UITextField`是iOS开发中的核心组件,理解并熟练运用它的各种属性和...

    ios-UITextField.zip

    下面我们将详细探讨如何实现这个功能。 首先,我们要理解`UITextField`的`placeholder`属性。`placeholder`是当`UITextField`没有输入内容时显示的提示文本,帮助用户了解该字段的作用。默认情况下,`placeholder`...

    iOS_UILabel and UITextField

    接下来是`UITextField`,它允许用户输入文本,常用于登录、搜索等场景。其关键特性与API如下: 1. **创建与初始化**:`init(frame:)`或`init(style: placeholder:)`方法创建`UITextField`,其中`style`参数定义了...

    UITextField用法

    总之,`UITextField`是iOS应用中处理文本输入的核心工具,理解和掌握其用法对于开发功能完善的移动应用至关重要。通过熟悉其属性、代理方法以及事件处理,开发者可以更好地定制和控制用户的输入体验。

    iOS中@功能的实现.zip

    使用`UITextField`或`UITextView`作为输入框,并自定义其`InputView`以展示搜索建议列表。同时,需要处理键盘事件,确保用户可以轻松地取消@操作。 5. **文本高亮**: 选择用户名后,需要在文本中高亮显示。可以...

    ios-重写系统搜索框.zip

    自定义搜索框还需要与数据源交互,实现搜索功能。这通常涉及对数据源进行过滤,并更新显示结果。为此,可以定义一个协议,让使用自定义搜索框的其他类遵循,以处理搜索请求和返回结果。 7. **动画效果**: 为了...

    ios-自定义搜索框.zip

    接着,我们要实现搜索框的交互。这包括监听UITextField的编辑事件,如textDidChange代理方法,当用户在搜索框中输入文字时,可以实时更新搜索结果并显示。同时,为了提高用户体验,还可以添加键盘的return键事件处理...

    iOS自动匹配名称、代码、开头字母的UIFextField

    2. **实现搜索逻辑**: - 创建一个数据模型,存储待匹配的名称和代码,如`struct Item { String name; String code; }`,并将其存入数组`[Item]`中。 - 根据输入的字符串,遍历数据模型数组,查找以该字符串开头的...

    MyTextField

    本文将基于标题"MyTextField"和描述中的"自己做的block的应用",结合iOS SDK 5.1,深入探讨如何通过Block实现自定义`UITextField`的功能。 一、Block基础 Block是Objective-C中的一种强大的语法特性,它可以捕获并...

    ios-仿蜜芽App搜索界面效果实现.zip

    这可以通过监听`UITextField`的`becomeFirstResponder`和`resignFirstResponder`事件来实现。 9. **响应式设计**: 确保搜索界面在不同设备尺寸和屏幕方向下都能正常工作,需要进行响应式布局设计。可以使用...

    ios-类似微博@功能(编辑页面).zip

    - 实现搜索功能,当用户在“@”后输入关键词时,实时过滤数据模型中的联系人,更新显示列表。 5. **事件响应**: - 当用户在联系人列表中选择一个联系人时,需要捕获选中事件,更新文本输入框的内容,将选中的...

Global site tag (gtag.js) - Google Analytics