iOS-UITextView-文本输入视图的使用
#import "ViewController.h"
@interface ViewController ()<UITextViewDelegate>
{
UIView *bgView;
UITextView *inputView;
CGRect keyBoardRect;
NSMutableArray *allContent;
}
@end
/*
1.NSDate 时间格式
2.NSTimeInterval 时间间隔
基本单位 秒
3.NSDateFormatter 时间格式器
用于日期对象的格式化或者字符串解析日期为对象
时间戳:
日期格式例如以下:
y 年
M 年中的月份
D 当天是今年的第多少天
d 月份中的天数
F 月份中的周数
E 星期几
a Am/pm
H 一天中的小时数(0-23)
k 一天中的小时数(1-24)
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
4.比較时间:
(1)比較两个日期是不是同一个日期 isEqualToDate
(2)获取较早的日期 earlierDate
(3)获取较晚的时间 lateDate
(4)获取两个日期间隔多少秒
*/
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
allContent = [NSMutableArray array];
//通过通知检測键盘显示的状态
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoard:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter ] addObserver:self selector:@selector(keyBoard:) name:UIKeyboardWillHideNotification object:nil];
//须要输入框和其上面的button同一时候上移
bgView = [[UIView alloc]initWithFrame:CGRectMake(0, CGRectGetHeight(self.view.frame)-40, CGRectGetWidth(self.view.frame), 40)];
bgView.backgroundColor = [UIColor grayColor];
[self.view addSubview:bgView];
inputView = [[UITextView alloc]initWithFrame:CGRectMake(50, 5, 200, 30)];
inputView.layer.cornerRadius = 5;
inputView.delegate = self;
[bgView addSubview:inputView];
UIButton *sendBt = [UIButton buttonWithType:UIButtonTypeCustom];
sendBt.frame = CGRectMake(CGRectGetMaxX(inputView.frame)+20, 5, 80, 30);
[bgView addSubview:sendBt];
sendBt.backgroundColor = [UIColor cyanColor];
[sendBt setTitle:@"发送" forState:UIControlStateNormal ];
[sendBt setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
sendBt.tag = 100;
sendBt.layer.cornerRadius = 5;
//默认不能够使用button,输入内容后才使用
sendBt.enabled = YES;
[sendBt addTarget:self action:@selector(senContent:) forControlEvents:UIControlEventTouchUpInside];
}
#pragma ------------键盘的状态--------------
- (void)keyBoard:(NSNotification *)not
{
NSDictionary *info = not.userInfo;
// NSLog(@"%@",info);
keyBoardRect = [info[UIKeyboardFrameEndUserInfoKey]CGRectValue];
bgView.frame = CGRectMake(0, CGRectGetMinY(keyBoardRect)-40, CGRectGetWidth(self.view.frame), 40);
}
#pragma ------------TextViewDelegate方法--------------
- (void)textViewDidBeginEditing:(UITextView *)textView
{
//開始编辑的时候
同意发送button使用
UIButton *button = (UIButton *)[bgView viewWithTag:100];
button.enabled = YES;
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
//通过检測textView输入的内容得到它的内容高度,把内容的高度设置成inputView的高度以及bgView的高度
bgView.frame = CGRectMake(0, CGRectGetHeight([UIScreen mainScreen].bounds)-textView.contentSize.height-10-CGRectGetHeight(keyBoardRect), CGRectGetWidth([UIScreen mainScreen].bounds), textView.contentSize.height+10);
inputView.frame = CGRectMake(50, 5, 200, textView.contentSize.height);
return YES;
}
#pragma ------------发送输入的内容--------------
- (void)senContent:(UIButton *)sender
{
[inputView resignFirstResponder];
NSLog(@"%@",inputView.text);
inputView.text = @"";
NSDate *curDate = [NSDate date];
NSLog(@"%@",[NSString stringWithFormat:@"%@",curDate]);
//时
分 秒
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
//设置时间格式
formatter.dateFormat = @"y/M/d E a hh: mm :ss";
//把curDate依照时间格式
转化成字符串
NSString *time = [formatter stringFromDate:curDate];
//NSDateFormatter 转换的时间
是设备的时间
NSLog(@"%@",time);
//获得从1970年到如今的时间间隔(一般是时间戳的
时间间隔)
NSTimeInterval timeInterval = [curDate timeIntervalSince1970];
NSString *timeString = [NSString stringWithFormat:@"%0.f",timeInterval];
NSLog(@"时间戳:%@",timeString);
//把时间戳
转换成 日期
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[timeString doubleValue]];
NSLog(@"时间戳
转时间%@",[formatter stringFromDate:date]);
//获得较早的日期
//NSDate *earDate = [date earlierDate:date];
//通过时间间隔
能够计算未来+ 或者过去的时间-
//NSDate dateWithTimeIntervalSinceNow:
计算当前日期到时间间隔日期
//获得一天的时间间隔
NSTimeInterval interval = 24*60*60;
//设置时间格式为
年 月
日
NSDate *ysterday = [NSDate dateWithTimeIntervalSinceNow:-interval];
formatter.dateFormat = @"yyyy-MM-dd";
NSLog(@"%@",[formatter stringFromDate:ysterday]);
NSDictionary *info = @{@"content":inputView.text,@"time":time};
[allContent addObject:info];
//指定依据那个key
进行分类
NSSortDescriptor *soreDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"time" ascending:NO];
NSMutableArray *soreDescriptorArry = [NSMutableArray arrayWithObjects:&soreDescriptor count:1];
//依据
描写叙述的数组进行排序
allContent = [[allContent sortedArrayUsingDescriptors:soreDescriptorArry] mutableCopy];
sender.enabled = NO;
NSLog(@"%@",allContent);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
iOS-UITextView-文本输入视图的使用的更多相关文章
- IOS UITextView支持输入、复制、粘贴、剪切自定义表情
UITextView是ios的富文本编辑控件,除了文字还可以插入图片等.今天主要介绍一下UITextView对自定义表情的处理. 1.首先识别出文本中的表情文本,然后在对应的位置插入NSTextAtt ...
- iOS UITextView 根据输入text自适应高度
转载自:http://www.cnblogs.com/tmf-4838/p/5380495.html #import "ViewController.h" @interface V ...
- iOS中 UITextView文本视图 技术分享
UITextView: 文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文. UITextField的用处多,UITextView的用法也不 ...
- iOS:文本视图控件UITextView的详细使用
文本视图控件:UITextView 介绍:它是一个文本域的编辑视图,可以在该区域上进行编辑(包括删除.剪贴.复制.修改等),它与文本框UITextField的不同之处是:当它里面的每一行内容超出时,可 ...
- UITextView(文本视图) 学习之初体验
UITextView文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文.常见UITextView使用在APP的软件简介.内容详情显示.小说阅 ...
- iOS,文本输入,键盘相关
1.UIKeyboard键盘相关知识点 2.点击空白区域隐藏键盘(UIKeyboard) 3.键盘(UIKeyboard)挡住输入框处理 4.自定义键盘(UIKeyboard) 5.监听键盘弹出或消失 ...
- iOS UITextView 输入内容实时更新cell的高度
iOS UITextView 输入内容实时更新cell的高度 2014-12-26 11:37 编辑: suiling 分类:iOS开发 来源:Vito Zhang'blog 11 4741 UIT ...
- 最全的Swift社交应用文本输入优化汇总
在大部分应用中,都有输入的需求,面对众多用户,他们的想法各异,输入的文本内容也是千奇百怪,面对不同的输入,我们该如何优化输入体验?本文将汇总一下Swift社交应用文本输入优化技巧. AD: 一.输入相 ...
- IOS UITextView自适应高度
LOFTER app需要实现了一个类似iPhone短信输入框的功能,它的功能其实蛮简单,就是:[UITextView的高度随着内容高度的变化而变化].实现思路应该是: 在UITextView的text ...
- Xamarin iOS教程之自定义视图
Xamarin iOS教程之自定义视图 Xamarin iOS自定义视图 工具栏中的视图在实际应用开发中用的很多,但是为了吸引用户的眼球,开发者可以做出一些自定义的视图. [示例2-33]以下将实现一 ...
随机推荐
- rabbitmq 简单示例(Hello World)
一:消息中间件: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 RabbitMQ是实现AMQP( ...
- C# 面向对象之类和方法
一.新建一个类,用来存放属性和方法( 属性和方法写在同一个类中). 先新建一个类: using System; using System.Collections.Generic; using Syst ...
- Django之auth登录认证
前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...
- nginx_location用法总结
location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配 ...
- 如何使用Dilworth定理
相关例题:NOIP 1999导弹拦截 遇到这题不会去网上搜Dilworth定理,太难受了,看不懂证明 但是,我知道怎么使用了,管那么多,会用就完事了 学习自这篇文章 -1.为什么我不想学证明这个定理 ...
- 13jsp、javaWeb开发模式
13jsp.javaWeb开发模式-2018/07/25 1.jsp jsp实际上就是servlet.jsp=html+java,为用户提供动态内容 不适合编写Java逻辑 2.JSP原理 翻译(生成 ...
- HDU - 2041 - 超级楼梯(dp)
题意: 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? 思路: 如何到第n阶台阶,只能从n-1和n-2台阶上去,那么只需要计算到n-1阶台阶和到n-2阶台 ...
- Vijos P1334 NASA的食物计划
解法 二维费用01背包问题 解法就是先枚举物品再枚举条件这里两个条件所以要枚举两个for 代码 #include <bits/stdc++.h> using namespace std; ...
- Codeforces Round #530 (Div. 2) (前三题题解)
总评 今天是个上分的好日子,可惜12:30修仙场并没有打... A. Snowball(小模拟) 我上来还以为直接能O(1)算出来没想到还能小于等于0的时候变成0,那么只能小模拟了.从最高的地方进行高 ...
- Python学习第二阶段,day1, 装饰器,生成器,迭代器
装饰器 不得不说,这是对初学者最难以理解的概念了,虽然我学过面向对象,但还是被搞懵逼了..前面还好理解,主要是后面“装饰器的装饰器”我理解不了.装饰器工厂,根据传入的参数不同去返回不同的装饰器,我不得 ...