使用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; }
实现结果为
相关推荐
在iOS开发中,使用UITextField来实现搜索功能是一种常见的做法,但是UITextField的回调函数中没有一个合适的触发搜索的时机。UITextFieldTextDidChangeNotification每输入一个字符都会调用,怕是不太合适,而...
在iOS开发中,`UITextField` 是一个至关重要的UI组件,它允许用户输入文本,并且广泛应用于各种场景,如登录、注册、搜索等。在标题提到的"炒股软件"上下文中,`UITextField` 可能被用来输入股票代码、设置价格预警...
为了实现更复杂的功能,可以设置UITextField的代理。遵循`UITextFieldDelegate`协议,然后设置`textField.delegate = self`。例如,可以使用`textFieldShouldReturn(_:)`方法处理回车键事件,通常用于提交表单。 在...
标题提到的"swift-UITextField的分类一行代码搞定最大输入长度历史记录选中指定文字等等功能",就是一种高效的方法来定制`UITextField`的行为,而无需编写大量的自定义代码。 首先,我们来讨论如何限制`UITextField...
首先,`UITextField`是UIKit框架的一部分,它继承自`UIView`,提供了基本的文本输入功能。创建`UITextField`通常有以下几种方式: 1. **代码创建**:在Objective-C中,你可以通过初始化方法来创建一个`UITextField`...
本教程将详细讲解如何通过`UITextField`来实现`UISearchBar`的自定义功能,以及如何利用`UITextField`的代理方法来处理用户输入和响应。 首先,我们来看一下`UISearchBar`的基本结构。`UISearchBar`由一个`...
本篇文章将详细讲解如何在iOS中使用`UITextField`实现这个功能。 首先,让我们了解问题的背景。在iOS的输入法中,当用户在`UITextField`中输入文字时,系统默认会提供智能拼音联想。这在某些场景下可能会导致未被...
最后,不要忘记设置`UITextField`的代理,通过遵循`UITextFieldDelegate`协议,可以实现更多的功能,如验证输入、处理return键等。 总的来说,`UITextField`是iOS开发中的核心组件,理解并熟练运用它的各种属性和...
下面我们将详细探讨如何实现这个功能。 首先,我们要理解`UITextField`的`placeholder`属性。`placeholder`是当`UITextField`没有输入内容时显示的提示文本,帮助用户了解该字段的作用。默认情况下,`placeholder`...
接下来是`UITextField`,它允许用户输入文本,常用于登录、搜索等场景。其关键特性与API如下: 1. **创建与初始化**:`init(frame:)`或`init(style: placeholder:)`方法创建`UITextField`,其中`style`参数定义了...
总之,`UITextField`是iOS应用中处理文本输入的核心工具,理解和掌握其用法对于开发功能完善的移动应用至关重要。通过熟悉其属性、代理方法以及事件处理,开发者可以更好地定制和控制用户的输入体验。
使用`UITextField`或`UITextView`作为输入框,并自定义其`InputView`以展示搜索建议列表。同时,需要处理键盘事件,确保用户可以轻松地取消@操作。 5. **文本高亮**: 选择用户名后,需要在文本中高亮显示。可以...
自定义搜索框还需要与数据源交互,实现搜索功能。这通常涉及对数据源进行过滤,并更新显示结果。为此,可以定义一个协议,让使用自定义搜索框的其他类遵循,以处理搜索请求和返回结果。 7. **动画效果**: 为了...
接着,我们要实现搜索框的交互。这包括监听UITextField的编辑事件,如textDidChange代理方法,当用户在搜索框中输入文字时,可以实时更新搜索结果并显示。同时,为了提高用户体验,还可以添加键盘的return键事件处理...
2. **实现搜索逻辑**: - 创建一个数据模型,存储待匹配的名称和代码,如`struct Item { String name; String code; }`,并将其存入数组`[Item]`中。 - 根据输入的字符串,遍历数据模型数组,查找以该字符串开头的...
本文将基于标题"MyTextField"和描述中的"自己做的block的应用",结合iOS SDK 5.1,深入探讨如何通过Block实现自定义`UITextField`的功能。 一、Block基础 Block是Objective-C中的一种强大的语法特性,它可以捕获并...
这可以通过监听`UITextField`的`becomeFirstResponder`和`resignFirstResponder`事件来实现。 9. **响应式设计**: 确保搜索界面在不同设备尺寸和屏幕方向下都能正常工作,需要进行响应式布局设计。可以使用...
- 实现搜索功能,当用户在“@”后输入关键词时,实时过滤数据模型中的联系人,更新显示列表。 5. **事件响应**: - 当用户在联系人列表中选择一个联系人时,需要捕获选中事件,更新文本输入框的内容,将选中的...