ios基础控件之UITextView

   多行文本控件UITextView继承UIScrollView:UIView控件,默认是带有滚动条的。UITextView和UITextField都是文本编辑、显示控件,它们功能和行为在很多方面都是相似的。
UITextView与UITextField的区别主要在以下三点:
   UITextView是一个多行文本框,而UITextField只是单行文本框。
   UITextView没有继承UIControl控件,因此不能绑定IBAction事件处理         方法;也不能调用UIControl提供的addTarget:action:forControlEvents:方法来绑定事件处理的方法。
   UITextView继承了UIScrollView,因此具有UIScrollView的功能和行为。

textView=[[UITextView alloc]initWithFrame:CGRectMake(100, 100, 300, 300)];//初始化尺寸

self.textView.textColor=[UIColor blackColor];//字体颜色

self.textView.font=[UIFont fontWithName:@”Arial” size:18.0];//字体类型和大小

[textView.layer setCornerRadius:50];//设置圆角

self.textView.delegate=self;//设置它的委托方法

textView.layer.borderWidth=5;//设置边框

self.textView.backgroundColor=[UIColor redColor];//背景颜色

[email protected]”“;//显示内容

self.textView.returnKeyType=UIReturnKeyDefault;//返回键的类型

self.textView.keyboardType=UIKeyboardTypeDefault;//键盘类型

self.textView.scrollEnabled=YES;//是否可以拖动

self.textView.autocapitalizationType=UIViewAutoresizingFlexibleHeight;//自适应高度

[self.view addSubview:self.textView];

关闭键盘可以通过以下几种方法:

倘若有导航栏的话,在导航栏上添加退出按钮:

-(void)textViewDidBeginEditing:(UITextView *)textView

{

UIBarButtonItem *done=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leaveEditMode)];

self.navigationItem.rightBarButtonItem=done;

}

-(void)textViewDidEndEditing:(UITextView *)textView

{

self.navigationItem.rightBarButtonItem=nil;

}

-(void)leaveEditMode

{

[self.textView resignFirstResponder];

}

在键盘上边添加一个退出按钮:

UIToolbar *topView=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];

[topView setBarStyle:UIBarStyleBlack];

UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@”Done” style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];

-(IBAction)dismissKeyBoard

{

[textView resignFirstResponder];

}

还可以修改键盘上ruturn按钮的功能:

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

{

if ([text isEqualToString:@”\n”]) {

[textView resignFirstResponder];

return NO;

}

return YES;

}

有些时候我们选取UITextView上一部分文字想转发,复制或者拷贝。可以在选取栏中增加按钮:

UIMenuItem *menuItem=[[UIMenuItem alloc]initWithTitle:@”转发” action:@selector(changeColor)];

UIMenuController *menu=[UIMenuController sharedMenuController];

[menu setMenuItems:[NSArray arrayWithObject:menuItem]];

-(void)changeColor

{

//实现转发,复制或者拷贝具体功能的代码

}

在日常软件中我们很多地方都需要为UITextView根据需求扩展它的长度。

下面有三种实现的方法:

-(void)textViewDidChange:(UITextView *)textView

{

if(textView.text.length > 20)//一行最多多少字节

{

一、

// UIFont *font = [UIFont systemFontOfSize:15];

// CGSize size = [textView.text sizeWithFont:font constrainedToSize:CGSizeMake(300, 1000) lineBreakMode:UILineBreakModeCharacterWrap];

// //BgImage.frame = CGRectMake(0, 202-size.height+15, 320, size.height+28);

// [textView setFrame:CGRectMake(0, 1, 320, size.height+10)];

**二、**

// CGRect frame = textView.frame;

// CGSize size = [textView.text sizeWithFont:textView.font

// constrainedToSize:CGSizeMake(280, 1000)

// lineBreakMode:UILineBreakModeTailTruncation];

// frame.size.height = size.height > 1 ? size.height + 20 : 64;

// textView.frame = frame;

三、

CGRect frame = textView.frame;

frame.size.height = textView.contentSize.height;

textView.frame = frame;

}

时间: 2024-08-01 09:29:35

ios基础控件之UITextView的相关文章

iOS基础控件UINavigationController中的传值

iOS基础控件UINavigationController中的传值,代理传值,正向传值,反向传值 #import <UIKit/UIKit.h> //声明一个协议 @protocol SendValue<NSObject> //定义一个方法 - (void)sendBtnTitle:(NSString *)title; @end @interface FirstViewController : UIViewController // 定义代理 @property (nonatomi

[iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表&quot;练习)

A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不可以再按 2.在屏幕中间弹出一个消息框,通知消息“xx已经被安装”,慢慢消失 3.消息框样式为圆角半透明 B.不使用代理模式,使用app空间组和主View之间的父子View关系 1.在主View中创建一个消息框 主View控制器:ViewController.m 1 // 创建下载成功消息框 2 CGFloat labelWid

ios基础控件之开关按钮(UISwitch)

UISwitch控件是iOS开发的基础控件,是非常简单的一个控件,因为它的方法比较少.UISwitch继承于UIControl基类,因此可以当成活动控件使用. 注意:开关状态通过它的on属性进行读取,该属性是一个BOOL属性 创建: UISwitch* mySwitch = [[ UISwitch alloc]initWithFrame:CGRectMake(0.150.0f,100.0f,0.0f,0.0f)]; 可能你会疑问为什么它的大小都设置为0?没错,它的大小你设置是无效的,系统会为你分

iOS 基础控件(下)

上篇介绍了UIButton.UILabel.UIImageView和UITextField,这篇就简短一点介绍UIScrollView和UIAlertView. UIScrollView 顾名思义也知道这个是和滚动相关的控件,在Android开发时遇到过ScrollView,当内容的尺寸超出了屏幕范围之后,用ScrollView则可以通过滚动的方式使得超出屏幕的那部分内容通过滚动的方式显示出来,在Android里面有水平的ScrollView和垂直的ScrollView,在iOS里面就只有一个S

[iOS基础控件 - 6.9] 聊天界面Demo

A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话框 4.隐藏相同的发送时间 5.底部功能按钮:语音按钮.消息输入框.表情按钮.附加按钮 6.响应键盘事件,呼出键盘.隐藏键盘时对上述的视图作出上移操作 7.键盘的发送事件处理 B.实现点 1.底层视图搭建 上部分聊天信息框:UITableView 下部分功能区:UIButton 信息输入框使用无边框

[iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储

A.需求 1.搭建一个“私人通讯录”Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改) B.基本架构 1. 5个控制器 (1)导航控制器 NavigationController (2)登陆 UIViewController 输入账号密码 记住密码.自动登录开关 登陆跳转按钮 (3)联系人列表 TableViewController 注销功能 添加联系人跳转按钮 (4)添加联系人 UIView (5)查看.编辑 UI

[iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo

A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用 B.实现步骤 1.准备plist文件和国旗图片 2.创建模型 1 // 2 // Flag.h 3 // CountriesSelection 4 // 5 // Created by hellovoidworld on 14/12/16. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import <Foun

[iOS基础控件 - 7.0] UIWebView

A.基本使用 1.概念 iOS内置的浏览器控件 Safari浏览器就是通过UIWebView实现的 2.用途:制作简易浏览器 (1)基本请求 创建请求 加载请求 (2)代理监听webView加载,例如提示正在加载 (3)前进.后退 使用NavigationController,在底部加上导航栏(勾选showToolBar),加上回退和前进按钮 (4)给顶部导航栏加上地址栏 UISearchBar 代理监听“搜索”按钮,提取地址栏文本 1 // 2 // ViewController.m 3 //

iOS基础控件之UILabel、UITextField、UIButton(文本、输入框、按钮)

UILabel主要是为了显示文本,UITextField主要是为了输入文本,UIButton可以显示文本并且响应事件. 在详细讲诉这三个控件之前,我想先讲一下UIView,其实UIView很好理解,就是之前讲UIWindow时的添加在画板上的画布.而它也非常的重要,在iOS中几乎所有可视化控件都是UIView的子类,这三个控件当然也包括在内. 如何用代码创建UIView: //设置frame确定UIView对象的位置以及大小 UIView *view =[ [UIView alloc] init