`
janedoneway
  • 浏览: 582075 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

iPhone 应用开发之二:UITextView控件的详细讲解

 
阅读更多

From:http://www.2cto.com/kf/201111/110846.html

 

 

1.创建并初始化

创建UITextView的文件,并在.h文件中写入如下代码:

 

 

#import <UIKit/UIKit.h> 

 

@interface TextViewController : UIViewController <UITextViewDelegate> 

              UITextView *textView; 

 

@property (nonatomic, retain) UITextView *textView; 

 

@end 

 

 

 

 

在.m文件中初始化这个textview,写入代码如下:

 

self.textView = [[[UITextView alloc] initWithFrame:self.view.frame]autorelease]; //初始化大小并自动释放 

 

self.textView.textColor = [UIColor blackColor];//设置textview里面的字体颜色 

 

self.textView.font = [UIFont fontWithName:@"Arial" size:18.0];//设置字体名字和字体大小 

 

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

 

self.textView.backgroundColor = [UIColor whiteColor];//设置它的背景颜色 

 

 

 

self.textView.text = @"Now is the time for all good developers tocome to serve their country.\n\nNow is the time for all good developers to cometo serve their country.";//设置它显示的内容 

 

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

 

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

 

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

 

 

 

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

 

 

 

[self.view addSubview: self.textView];//加入到整个页面中 

 

 

 

 

2. UITextView退出键盘的几种方式

因为你点击UITextView会出现键盘,如果你退出键盘,有如下几种方式:

(1)如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。

代码如下:

 

- (void)textViewDidBeginEditing:(UITextView *)textView {   

 

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

 

   self.navigationItem.rightBarButtonItem = done;       

 

}   

 

- (void)textViewDidEndEditing:(UITextView *)textView {   

 

    self.navigationItem.rightBarButtonItem = nil;   

 

}   

 

- (void)leaveEditMode {   

 

    [self.textView resignFirstResponder];   

 

}   

 

 

 

(2)如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。

代码如下:

 

#pragma mark - UITextView Delegate Methods   

 

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

 

{   

 

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

 

        [textView resignFirstResponder];   

 

        return NO;   

 

    }   

 

    return YES;   

 

}   

 

 

 

 

这样无论你是使用电脑键盘上的回车键还是使用弹出键盘里的return键都可以达到退出键盘的效果。

(3)还有你也可以自定义其他加载键盘上面用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。

代码如下:

 

 

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

 

    [topView setBarStyle:UIBarStyleBlack];   

 

    UIBarButtonItem * helloButton = [[UIBarButtonItem alloc]initWithTitle:@"Hello" style:UIBarButtonItemStyleBordered target:self action:nil];         

 

    UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];   

 

 

 

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

 

    NSArray * buttonsArray = [NSArray arrayWithObjects:helloButton,btnSpace,doneButton,nil];   

 

    [doneButton release];   

 

    [btnSpace release];   

 

    [helloButton release];   

 

    [topView setItems:buttonsArray];   

 

    [tvTextView setInputAccessoryView:topView];   

 

-(IBAction)dismissKeyBoard   

 

{   

 

    [tvTextView resignFirstResponder];   

 

}   

 

(4)设置UITextView圆角问题

做法是在#import QuartzCore/QuartzCore.h 后,便能調用[textView.layer setCornerRadius:10]; 來把UITextView 设定圓角

(5)UITextView根据文本大小自适应高度

通过实现文本字数来确定高度,如下:

 

 

NSString * desc = @"Description it is  a test font, and don't become angry for which i use to do here.Now here is a very nice party from american or not!";   

 

CGSize  size = [desc sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(240, 2000) lineBreakMode:UILineBreakModeWordWrap];  

 

 

 

只有UILabel需要定义的numberoflines为0,即不做行数的限制。如下:

 

[label  setNumberOfLines:0];   

[label  setFrame:CGRectMake(40, 135, 240, size.height+10)];   

[label setText:desc];  

 

 

 

 

 

 

(6)UITextView自定选择文字后的菜单

在ViewDidLoad中加入:

 

UIMenuItem *menuItem = [[UIMenuItem alloc]initWithTitle:@"分享到新浪微博" action:@selector(changeColor:)]; 

UIMenuController *menu = [UIMenuController sharedMenuController]; 

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

[menuItem release]; 

 

 

当然上面那个@selector里面的changeColor方法还是自己写吧,也就是说点击了我们自定义的菜单项后会触发的方法。

然后还得在代码里加上一个方法:

 

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 

if(action ==@selector(changeColor:)) 

if(textView.selectedRange.length>0) 

return YES; 

return NO; 

 

 

 

实现后如下图:

\">

 

今天的UITextView就讲到这里,主要讲了UITextView的初始化和开发中会遇到的一些问题和自定义等问题。谢谢大家支持哈。

 

 

摘自 Andy---清风
分享到:
评论

相关推荐

    iphone开发控件的demo

    在iOS应用开发中,iPhone平台提供了丰富的用户界面控件,使得开发者可以构建出美观且功能齐全的应用。"iphone开发控件的demo"是专为初学者设计的学习资源,包含了多种常用控件的示例代码,帮助开发者快速掌握控件的...

    Iphone控件Demo大全

    "Iphone控件Demo大全"提供了一系列实用的示例,旨在帮助新手快速熟悉并掌握iPhone应用开发中的常见控件。以下是对这些控件及其用法的详细讲解: 1. UIButton:按钮是iOS应用中最基础的交互元素,用于触发某些事件或...

    UITextView

    `UITextView`是iOS开发中一个非常重要的组件,主要用于显示和编辑多行文本。它在用户界面设计中扮演着文本输入和展示的核心角色,适用于创建日记应用、文本编辑器、评论输入框等场景。在本篇文章中,我们将深入探讨`...

    UITextView-Placeholder:UITextView缺少的占位符

    UITextView +占位符 UITextView缺少一个占位符。 安装 使用 。 pod 'UITextView+Placeholder' 用法 导入动态框架: 例如,如果您将CocoaPods与use_frameworks!一起使用use_frameworks! 旗。 @import UITextView_...

    UITextView限制字数封装

    在iOS开发中,`UITextView` 是一个常用的用于显示和编辑多行文本的视图,但默认情况下,它并未提供直接限制用户输入字数的功能。为了实现这一需求,开发者需要自定义并封装一个功能,使得`UITextView`可以根据设定的...

    UITextView 实现UITextField功能

    在iOS开发中,`UITextField`和`UITextView`是两种常用的文本输入控件。`UITextField`通常用于单行文本输入,而`UITextView`则适用于多行文本输入。然而,在某些场景下,开发者可能希望`UITextView`具备`UITextField`...

    iPhone把遮罩层添加到UITextView键盘上

    在iOS应用开发中,我们经常会遇到用户在使用`UITextView`进行文字输入时,由于键盘弹出遮挡了部分屏幕内容的问题。为了提供更好的用户体验,开发者可以实现一个遮罩层来覆盖键盘,使得用户在输入时依然能清晰看到...

    iOS应用开发中的文字选中操作控件UITextView用法讲解

    在iOS应用开发中,`UITextView` 是一个非常重要的组件,用于展示和编辑多行文本。这个控件允许用户输入、查看以及选择文本,适用于创建日记应用、笔记应用或者任何需要用户输入较长文本的场景。在本文中,我们将深入...

    UITextView:定制选中文字菜单和选择文字

    在iOS开发中,`UITextView` 是一个非常重要的控件,用于显示和编辑多行文本。这个控件在很多场景下都有广泛的应用,比如输入备注、编辑日记等。本示例(Demo)主要关注如何对`UITextView`进行深度定制,特别是关于...

    XMTextView:UITextView扩展

    UITextView也可以直接使用placeholder和placeholderColor属性大大节省开发的时间,让开发变得更简单。 一,使用步骤 1,导入XMTextView文件夹 2,引用#import "XMTextView.h"头文件 3,使用方法: // XMTextView的...

    TextViewHighlyAdapted:UITextView输入时高度自适应

    在iOS开发中,`UITextView` 是一个常用的控件,用于显示和编辑多行文本。在用户输入过程中,文本视图的高度可能需要根据输入内容的多少动态调整,以避免内容溢出。`TextViewHighlyAdapted` 项目就是针对这个需求提供...

    ICTextView:UITextView子类支持stringregex搜索和突出显示

    ICTextViews 伊万诺·比伦奇( )描述ICTextView是UITextView子类,具有对字符串/正则表达式搜索和突出显示的优化支持。 它还具有对iOS 7+的特定改进和对标准UITextView错误修正。产品特点支持字符串文字和正则...

    iphone开发的各种控件的测试

    在iOS应用开发中,iPhone应用程序的设计与实现离不开各种控件的使用。这些控件是构建用户界面的基础元素,使得用户可以与应用进行交互。本文将深入探讨iPhone开发中常见的控件及其测试方法。 首先,我们要了解的...

    swift-UITextView的简单封装

    在iOS应用开发中,`UITextView` 是一个用于展示多行可编辑文本的视图,它支持用户输入、格式化和编辑文本。本教程将详细讲解如何使用Swift对`UITextView`进行简单封装,以便更好地适应项目的特定需求,提高代码复用...

    WBTextKitTools:支持文字表情(GIF表情)的自定义UITextView控件

    WBTextKitTools简介:一个基于TextKit的自定义UITextView控件,支持自定义静态和GIF动态表情,支持选择复制粘贴表情,支持输入时直接显示表情。使用:请下载后,参照例子使用。注意:1、IOS7以上才能使用;2、GIF的...

    UITextView.xcodeproj.zip_xcode UITextView

    在iOS应用开发中,`UITextView` 是一个至关重要的组件,尤其对于文本输入和展示功能。`UITextView` 是苹果的UIKit框架中的一个类,它允许用户在界面上输入、编辑和查看多行文本。在Xcode项目中,`UITextView....

    ios应用源码之控件的使用 2018128

    在iOS应用开发中,控件(Controls)是构建用户界面(UI)的关键元素。它们允许用户与应用程序进行交互,提供视觉反馈,并执行特定的操作。在这个主题“ios应用源码之控件的使用 2018128”中,我们将深入探讨iOS中的...

    UICatalog苹果控件源码大全

    《UICatalog苹果控件源码大全》是一个深入学习iOS应用开发的重要资源,它包含了所有主要的用户界面(UI)控件的示例代码。这个压缩包提供了完整的源码,让开发者可以直观地理解并实践如何在Objective-C或Swift中创建...

Global site tag (gtag.js) - Google Analytics