首页 > 代码库 > iOS UItextView监听输入特定字符跳转页面选择选项返回
iOS UItextView监听输入特定字符跳转页面选择选项返回
今天有朋友问我一个需求的实现,于是自己写了一个Demo简单的实现了一下:
需求是:
1>比如: 检测用户输入"A"字符串,跳转页面选择选项,将选择的选项放置textView里,作为当前的输入;
2>不是"A"字符,则正常的textView输入;
3.用户跳转选择了,则将选择的输入到textView,否则,还是输入用户输入的字符即可.
实现代码如下:
// // ViewController.m // Demo // // Created by 思 彭 on 2017/4/30. // Copyright ? 2017年 思 彭. All rights reserved. // #import "ViewController.h" #import "ViewController1.h" @interface ViewController ()<UITextViewDelegate> @property (nonatomic, strong) UITextView *textView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 100, self.view.frame.size.width - 40, 200)]; self.textView.delegate = self; self.textView.backgroundColor = [UIColor lightGrayColor]; [self.view addSubview:self.textView]; } - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { return YES; } - (BOOL)textViewShouldEndEditing:(UITextView *)textView { return YES; } - (void)textViewDidBeginEditing:(UITextView *)textView { } - (void)textViewDidEndEditing:(UITextView *)textView { } - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { NSLog(@"%@",text); __block BOOL isChangeFlag; if ([text isEqualToString:@"A"]) { // 跳转页面 ViewController1 *vc1 = [ViewController1 new]; vc1.block = ^(NSString *str) { NSLog(@"str = %@",str); NSString *textViewText = textView.text; NSString *s = [textViewText substringWithRange:NSMakeRange(0, textViewText.length)]; if (str.length > 0) { isChangeFlag = YES; textView.text = [NSString stringWithFormat:@"%@%@",s, str]; } else { isChangeFlag = NO; textView.text = [NSString stringWithFormat:@"%@%@",s, text]; } }; [self.navigationController pushViewController: vc1 animated:YES]; return isChangeFlag; } return YES; } - (void)textViewDidChange:(UITextView *)textView { } - (void)textViewDidChangeSelection:(UITextView *)textView { } @end
跳转页面选择:
// // ViewController1.m // Demo // // Created by 思 彭 on 2017/4/30. // Copyright ? 2017年 思 彭. All rights reserved. // #import "ViewController1.h" @interface ViewController1 ()<UITableViewDelegate, UITableViewDataSource> @property (nonatomic, strong) UITableView *tableView; @property (nonatomic, copy) NSString *selectedStr; @end @implementation ViewController1 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor whiteColor]; self.selectedStr = @""; [self setUI]; } #pragma mark - 设置界面 - (void)setUI { self.tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:UITableViewStyleGrouped]; self.tableView.delegate = self; self.tableView.dataSource = self; self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.tableFooterView = [[UIView alloc]init]; // 注册cell [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; [self.view addSubview: self.tableView]; } #pragma mark - UITableViewDataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 10; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; cell.textLabel.text = [NSString stringWithFormat:@"%ld",indexPath.row]; cell.textLabel.font = [UIFont systemFontOfSize:15]; return cell; } #pragma mark - UITableViewDelegate - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0.001f; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 0.0001f; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *str = [tableView cellForRowAtIndexPath:indexPath].textLabel.text; self.selectedStr = str; if (self.block) { self.block(self.selectedStr); } [self.navigationController popViewControllerAnimated:YES]; } @end
总结:
其实主要的实现就在textView的代理的实现:
<style>p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 } span.s1 { } span.s2 { color: #ba2da2 } span.s3 { color: #703daa }</style>- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
iOS UItextView监听输入特定字符跳转页面选择选项返回
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。