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的代理的实现: 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;

 

转载于:https://www.cnblogs.com/pengsi/p/6790423.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDCA循环——快速提升软件质量的必备工具

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

oracle 表空间 用户

-- create user mapecun identified by "accp"; --alter user 用户名 quota unlimited on 表空间; --alter user mapecun quota unlimited on USERS; --grant create sequence to mapecun; /** grant create session to mapecun; grant create table to mapecun; g…

如何在Web前端实现CAD图文字全文搜索功能之技术分享

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

基于Java (spring-boot)的仓库管理系统

一、项目介绍 本系统的使用者一共有系统管理员、仓库管理员和普通用户这3种角色: 1.系统管理员&#xff1a;通过登录系统后&#xff0c;可以进行管理员和用户信息的管理、仓库和物品分类的管理&#xff0c;以及操作日志的查询&#xff0c;具有全面的系统管理权限。 2.仓库管理…

基于语义感知SBST的API场景测试智能生成

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

【KMP模板】简单写个KMP~

本来easy的KMP 却一直过不了洛谷的模板题。。。 仔细一看原来在输出next数组时打的回车而不是空格。。。 身败名裂。。。 话说有个sunday貌似一般状况下比KMP快呢。。。去看看2333 #include<cstdio> #include<iostream> #include<cstring> #include<algor…

2015 CALLED THE INTERFACE OF 2014

Writer&#xff1a;BYSocket&#xff08;泥沙砖瓦浆木匠&#xff09; 微博&#xff1a;BYSocket豆瓣&#xff1a;BYSocketReprint it anywhere u want. ”Hi , Happy New Year.Written in Stupid Enlish,Dont push me *.* ” 2014 System 2015 is coming.But 2014 is not over.…

论文解读(MERIT)《Multi-Scale Contrastive Siamese Networks for Self-Supervised Graph Representation Learni

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Fiddler抓包9-保存会话(save)

前言 为什么要保存会话呢&#xff1f;举个很简单的场景&#xff0c;你在上海测试某个功能接口的时候&#xff0c;发现了一个BUG&#xff0c;而开发这个接口的开发人员是北京的一家合作公司。你这时候给对方开发提bug&#xff0c; 如何显得专业一点&#xff0c;能让对方心服口服…

『现学现忘』Git基础 — 17、Commit对象

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Spring/MVC映射WEB-INF下的文件(img、css、js等)

学过Mvc的都知道并且会访问该目录下面的jsp 页面&#xff08;这是最基础的&#xff09; 但我们想访问里面的图片什么的&#xff0c;又该怎么去访问呢&#xff0c; 一句代码&#xff1a; <mvc:resources mapping"/img/**" location"/WEB-INF/img/"/> …

NSDate 类的总结,全面基础

NSDate 类的总结,全面基础 <span style"font-size:24px;"><span style"font-size:18px;">//1.创建日期对象//创建的NSDate对象,获得的永远是0时区时间,假设要是求东八区时间,就加8个小时NSDate *date [NSDate date];NSLog("%",date…

《HelloGitHub》第 73 期

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

FTP命令大全

项目需要&#xff0c;接触到ftp的一些操作&#xff0c;这里搬运一些ftp命令供以后参考 命令描述ABOR(ABORT)此命令使服务器终止前一个FTP服务命令以及任何相关数据传输。ACCT(ACCOUNT)此命令的参数部分使用一个Telnet字符串来指明用户的账户。ADAT(AUTHENTICATION/SECURITY DAT…

typora + EasyBlogImageForTypora直接上传图片到博客园

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

20155320 第十一周课堂总结

20155320 第十一周课堂总结 未及时提交原因&#xff1a; 对代码掌握的不熟练&#xff0c;并且由于起初不知道自己电脑浏览器不支持蓝墨云图片提交&#xff0c;尝试几次后只能把图片传到手机上导致截图没有及时提交 1,。测试题目 1.修改教材P74 一行代码 NineNineTable.java, 让…

Nginx的安装(笔记)

0, 先决条件Nginx 依赖 zlib zlib-devel gcc-c libtool openssl openssl-devel pcre安装命令&#xff1a;yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel pcre安装命令&#xff1a;wget http://downloads.sourceforge.net/project/pcre/pcre/8.41/p…

.NET混合开发解决方案14 WebView2的基本身份验证

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

jquerymobile应用中session、cookie

登陆界面html输入账号A密码后经验证页面login.asp跳转至列表页listA 更换用户B登录后跳转至列表B 结果列表B页显示内容与A页相同 列表页中用的是session&#xff0c;调整html跳转login.asp加随机数参数login.asp?rrandom()解决session不刷新的问题&#xff01; 转载于:https:/…

并发编程系列之Lock锁可重入性与公平性

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…