iOS中 UITextView文本视图 技术分享

 UITextView:

 文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文。

 UITextField的用处多,UITextView的用法也不少。常见UITextView使用在APP的软件简介、内容详情显示

 小说阅读显示、发表空间内容输入、说说文本框、评论文本框等。UITextView的使用有它本身的代理方法,也有

 继承于父类的方法。本身的方法有从开始编辑到结束编辑的整个过程的监听,继承的方法主要是继承于

 UIScrollView的方法,因为关于滚动的控制都属于UIScrollView的。根据常用经验,个人添加了在有导航栏

 的情况下可能输入文本框是下移的修复方法和添加文字时内容显示自动滚动到UITextView底部的实现方法。

#import "TextViewController.h"

@interface TextViewController ()<UITextViewDelegate>
@property(nonatomic,retain)UILabel *placeholderLabel;
@property(nonatomic,retain)UITextView *textView;
@end

@implementation TextViewController
- (void)dealloc
{
    self.placeholderLabel = nil;
    self.textView = nil;
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //添加背景颜色
    self.view.backgroundColor = [UIColor cyanColor];
    //导航控制器名称
    self.navigationController.title = @"UITextView的创建与使用";

    //调用介绍TextView的相关属性
    [self configureTextView];

}

介绍TextView的相关属性

- (void)configureTextView{

    //创建TextView视图
    self.textView = [[UITextView alloc]initWithFrame:CGRectMake(10, 80, self.view.frame.size.width - 80, 100)];
    //添加到父视图
    [self.view addSubview:self.textView];

    //修复文本框的偏移量(下移)
    self.automaticallyAdjustsScrollViewInsets = NO;
    //设置UITextView的属性
    //1.设置文本
//    self.textView.text = @"你好,我是小韩哥";
    //2.设置文字的对齐方式
    self.textView.textAlignment = NSTextAlignmentCenter;
    //3.设置文字字体相关属性
    self.textView.font = [UIFont systemFontOfSize:18];
    //等等和UITextField几乎是一样的

    //设置背景颜色
    self.textView.backgroundColor = [UIColor grayColor];
    //设置边框颜色和宽度
    self.textView.layer.borderColor = [[UIColor colorWithRed:200.0/255 green:50/255 blue:10/255 alpha:1] CGColor];
    self.textView.layer.borderWidth = 2;
    //7.设置编辑属性,是否允许编辑(为NO时,只用来显示,依然可以使用选择和拷贝功能)
    //    self.textView.editable = NO;
    self.textView.editable = YES;

    //模仿UITextField的placeholder属性
    //     在textViewDidBeginEditing和textViewDidEndEditing内写实现方法。

    self.placeholderLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, CGRectGetWidth(self.textView.frame), 20)];
    //将UILabel的背景颜色设置为透明颜色clearColor
    self.placeholderLabel.backgroundColor = [UIColor clearColor];
    //设置UILabel的textColor属性为灰色grayColor
    self.placeholderLabel.textColor = [UIColor grayColor];
    //设置UILabel的text属性为需要的提示文字
    self.placeholderLabel.text = @"请输入内容";
    //设置UILabel的font属性和self.textView.font一致
    self.placeholderLabel.font = self.textView.font;
    //将UILabel添加到self.textView图层上
    [self.textView addSubview:self.placeholderLabel];

    //添加按钮及监听
    UIButton *addButton = [UIButton buttonWithType:UIButtonTypeCustom];

    addButton.frame = CGRectMake(CGRectGetMaxX(self.textView.frame)+10, 80, 50, 30);

    addButton.backgroundColor = [UIColor lightGrayColor];

    [addButton setTitle:@"添加" forState:UIControlStateNormal];

    [addButton addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:addButton];

    //添加代理协议
    self.textView.delegate = self;
    [self.placeholderLabel release];
    [self.textView release];

}

#pragma mark- 按钮点击事件实现方法

- (void)btnClick:(UIButton*)sender{
    NSLog(@"添加内容:欢迎来到韩俊强的CSDN博客");

    self.textView.text = [self.textView.text stringByAppendingString:@"韩俊强的CSDN博客\n"];

    //输入文字时自动滚动到底部
    /*
     1.拼接字符串赋值给self.textView.text;
     2.计算NSRange自动滚动到底部。
     NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型
     */
    NSRange range = NSMakeRange([self.textView.text length]- 1, 1);
    [self.textView scrollRangeToVisible:range];

    //    [self.view endEditing:YES];
}

#pragma mark- 实现协议里的方法

//1、将要开始编辑
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{

    NSLog(@"将要开始编辑?");
    return YES;
}
//2、将要完成编辑
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{

    NSLog(@"将要结束编辑?");
    return YES;
}
//3、开始编辑
- (void)textViewDidBeginEditing:(UITextView *)textView{

    NSLog(@"开始编辑。");
    self.placeholderLabel.text = @"";
}
//4、完成编辑
- (void)textViewDidEndEditing:(UITextView *)textView{

    NSLog(@"结束编辑。");

    //模仿UTextField的placeholder属性
    if (self.textView.text.length == 0) {
        self.placeholderLabel.text = @"请输入内容";
    }else{
        self.placeholderLabel.text = @"";
    }
}
//5、将要改变内容
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{

    NSLog(@"将要改变内容?");

    return YES;
}
//6、内容完成改变,只有在内容改变时才触发,而且这个改变内容是手动输入有效,用本例中得按钮增加内容不触发这个操作
- (void)textViewDidChange:(UITextView *)textView{

    NSLog(@"改变内容。");
}
//7、内容被选中,几乎所有操作都会触发textViewDidChangeSelection,包括点击文本框、增加内容删除内容
- (void)textViewDidChangeSelection:(UITextView *)textView{

    NSLog(@"选中内容。");
}

#pragma mark- 回收键盘
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    //    [self.view endEditing:YES];
    [self.textView resignFirstResponder];
}

最终效果:

时间: 2024-11-02 20:56:46

iOS中 UITextView文本视图 技术分享的相关文章

iOS中 UISearchController 搜索栏 UI技术分享

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 20px; font-family: 'STHeiti Light';"><span style="color:#ff0000;">UISearchController 继承自UIViewController</span></p><p style="margin-top: 0px; mar

iOS中 WGAFN_网络监控 技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载. 需要用到第三方AFNetworking/SVProgressHUD 没有的可以关注我微博私信我.http://weibo.com/hanjunqiang AppDelegate.m [objc] view plain copy #import "AFNetworking.h"   #import "SVProgressHUD.h"   代码实现比较简单: [objc] view plain copy - (BOO

iOS中UITextView方法解读

iOS中UITextView方法解读 常用属性解读: @property(nonatomic,assign) id<UITextViewDelegate> delegate; 设置代理属性 @property(nonatomic,copy) NSString *text; textView上的文本 @property(nonatomic,retain) UIFont *font; 设置文本字体 @property(nonatomic,retain) UIColor *textColor; 设置

iOS中大流中的自定义cell 技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载. AppDelegate.m指定根视图 [objc] view plain copy self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[RootTableViewController alloc] initWithStyle:UITableViewStylePlain]];   //根视图 RootTable

ios-IOS中的文本实现3D效果

问题描述 IOS中的文本实现3D效果 我想要在IOS中对一些文本进行3D效果渲染,使用了UIKit和标准视图控制器. 实现之的效果大概能成为这样: 能不能通过iOS和UIKit实现?我只用了一个静态PNG图片,文本内容根据用户数据变化. 解决方案 我的方法是,不断的重复画文本的layer,创建有层次的效果: 我是创建UIImage Category,命名为UIImage+3d, .h文件: // // UIImage+3D.h // // Created by Lefteris Haritou

设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框

设计iOS中随系统键盘弹收和内容文字长度自适应高度的文本框     文本输入框是多数与社交相关的app中不可或缺的一个控件,这些文本输入框应该具备如下的功能: 1.在键盘为弹起时,输入框悬浮在界面底部. 2.当键盘弹起时,输入框位置上移至键盘上方,并且动画应与键盘同步. 3.当输入的文字超出一行时,输入框应想用的进行高度扩展. 4.当输入框的高度达到某一极限值时,输入框高度不应继续扩展,文字区域应该支持滑动.     使用autolayout布局技术加上对键盘的相关监听,可以十分方便的实现上述效

iOS中的UITextView文字输入光标使用技巧小结_IOS

1.创建并初始化 @property (nonatomic, strong) UITextView *textView; // 创建 self.textView = [[UITextView alloc] initWithFrame:self.view.frame]; // 设置textview里面的字体颜色 self.textView.textColor = [UIColor blackColor]; // 设置字体名字和字体大小 self.textView.font = [UIFont fo

IOS开发中取消文本框输入时的小键盘

  这篇文章主要介绍了IOS开发中取消文本框输入时的小键盘,需要的朋友可以参考下 首先在Interface Builder中选择TextFields,然后在Text Field Attributes中找到Text Input Traits,选择Return Key为done.OK 定义方法 - (IBAction) textFieldDoneEditing:(id)sender; //按下Done键关闭键盘 实现方法 代码如下: //按完Done键以后关闭键盘 - (IBAction) text

Linux的命令行中一些文本操作技巧的实例分享

  正则表达式 翻译领域不乏让人摸不着头脑的词汇,比如"句柄"."套接字"."鲁棒性".当然,"正则表达式"也属于这一类词汇.我刚接触正则表达式的时候,对这个名词感到非常迷惑.深入了解之后,才突然明白,原来所谓的 regular expression, 其实就是"有规律.有模式的字符串"而已. 很少有一门技术,只需要投入少量的学习成本即可获得巨大的价值回报.正则表达式就属于这一类技术.可惜很多人被它密码般的