iOS控件之UITextView

父類

繼承于UIScrollView,所以它具有UIScrollView的屬性和方法刽锤。

繼承于UIScrollView的相關(guān)屬性和方法以下不再贅述請(qǐng)參見(jiàn):iOS控件之UIScrollView

創(chuàng)建

UITextView * textView = [[UITextView alloc] init];

UITextView * textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 80, 300, 200)];

UITextView * textView = [[UITextView alloc] initWithFrame:CGRectMake(20, 80, 300, 200) textContainer:container];

屬性

內(nèi)容

textView.text = @"這是一段文字,這是一段文字屎蜓,這是一段文字墩衙,這是一段文字闸氮,這是一段文字泌霍,這是一段文字货抄,這是一段文字,這是一段文字朱转,這是一段文字蟹地,這是一段文字,這是一段文字藤为。\n這是一段文字怪与,這是一段文字,這是一段文字缅疟,這是一段文字分别,這是一段文字,這是一段文字存淫,這是一段文字耘斩,這是一段文字,這是一段文字桅咆,這是一段文字括授,這是一段文字。";

文字顏色

textView.textColor = [UIColor blackColor];

字體

textView.font = [UIFont systemFontOfSize:18.f];

對(duì)齊方式

textView.textAlignment = NSTextAlignmentCenter;

typedef NS_ENUM(NSInteger, NSTextAlignment) {

NSTextAlignmentLeft? ? ? = 0,? ? // 左對(duì)齊

#if TARGET_OS_IPHONE

NSTextAlignmentCenter? ? = 1,? ? // 居中對(duì)齊

NSTextAlignmentRight? ? = 2,? ? // 右對(duì)齊

#else /* !TARGET_OS_IPHONE */

NSTextAlignmentRight? ? = 1,

NSTextAlignmentCenter? ? = 2,

#endif

NSTextAlignmentJustified = 3,? ? // 兩端對(duì)齊

NSTextAlignmentNatural? = 4,? ? // 根據(jù)現(xiàn)實(shí)的文字特性對(duì)齊

} NS_ENUM_AVAILABLE_IOS(6_0);

是否可以編輯

textView.editable = NO; // 默認(rèn)YES

是否可以選中

textView.selectable = NO; // 默認(rèn)YES 當(dāng)設(shè)置為NO時(shí)岩饼,不能選擇

選中范圍

textView.selectedRange = NSMakeRange(8, 6);

富文本

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"這是一個(gè)富文本"];

[attrStr addAttribute:NSFontAttributeName

value:[UIFont systemFontOfSize:30.0f]

range:NSMakeRange(4, 3)];

textView.attributedText = attrStr;

// 是否允許改變文本屬性字典

textView.allowsEditingTextAttributes = NO;

NSMutableDictionary * attributesDic = [textView.typingAttributes mutableCopy];

[attributesDic setObject:[UIColor redColor] forKey:NSForegroundColorAttributeName];

// automatically resets when the selection changes

// 重新設(shè)置 接下來(lái)改變的文字 的屬性字典

textView.typingAttributes = attributesDic;

/*一般在一些代理函數(shù)中使用荚虚,比如當(dāng)編輯狀態(tài)的變化*/

關(guān)于富文本的知識(shí)請(qǐng)看iOS富文本字符串AttributedString詳解

輸入視圖

// 試著改變view的frame,發(fā)現(xiàn)只有height值會(huì)對(duì)視圖有影響籍茧,只會(huì)改變附加視圖的高度

UIView * view = [[UIView alloc] initWithFrame:CGRectMake(100, 50, 100, 100)];

view.backgroundColor = [UIColor redColor];

// 不彈出鍵盤(pán)版述,彈出添加的這個(gè)視圖,一般用作像銀行app的自定義鍵盤(pán)

textView.inputView = view;

輸入鍵盤(pán)附加視圖

UIView * view = [[UIView alloc] initWithFrame:CGRectMake(100, 50, 100, 50)];

view.backgroundColor = [UIColor redColor];

// 在鍵盤(pán)上附加一個(gè)視圖寞冯,一般用于添加一個(gè)收回鍵盤(pán)的按鈕

textView.inputAccessoryView = view;

獲得焦點(diǎn)后選中現(xiàn)有文本渴析,輸入內(nèi)容時(shí)清除當(dāng)前選中文本

textView.clearsOnInsertion = YES; // 默認(rèn)為NO

文本內(nèi)容與邊界的間距

textView.textContainerInset = UIEdgeInsetsMake(20, 20, 20, 20);

鏈接文本的樣式設(shè)置

/*在接下來(lái)的應(yīng)用中會(huì)介紹*/

@property(null_resettable, nonatomic, copy) NSDictionary *linkTextAttributes NS_AVAILABLE_IOS(7_0);

只讀屬性

有時(shí)間會(huì)專門(mén)來(lái)說(shuō)這三個(gè)屬性......,會(huì)將鏈接帖到這兒

// Get the text container for the text view

@property(nonatomic,readonly) NSTextContainer *textContainer NS_AVAILABLE_IOS(7_0);

// Convenience accessors (access through the text container)

@property(nonatomic,readonly) NSLayoutManager *layoutManager NS_AVAILABLE_IOS(7_0);

@property(nonatomic,readonly,strong) NSTextStorage *textStorage NS_AVAILABLE_IOS(7_0);

方法

滾動(dòng)到文本的某個(gè)段落

[textView scrollRangeToVisible:NSMakeRange(50, 5)];

代理函數(shù)

// 將要開(kāi)始編輯

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;

// 將要結(jié)束編輯

- (BOOL)textViewShouldEndEditing:(UITextView *)textView;

// 開(kāi)始編輯

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

// 結(jié)束編輯

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

// 文本將要改變

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

// 文本發(fā)生改變

- (void)textViewDidChange:(UITextView *)textView;

// 焦點(diǎn)發(fā)生改變

- (void)textViewDidChangeSelection:(UITextView *)textView;

// 是否允許對(duì)文本中的URL進(jìn)行操作

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange NS_AVAILABLE_IOS(7_0);

// 是否允許對(duì)文本中的富文本進(jìn)行操作

- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange NS_AVAILABLE_IOS(7_0);

通知

// 在程序中添加以下通知就可以獲得相應(yīng)的狀態(tài)事件

// 開(kāi)始編輯的通知

UIKIT_EXTERN NSString * const UITextViewTextDidBeginEditingNotification;

// 文本發(fā)生變化的通知

UIKIT_EXTERN NSString * const UITextViewTextDidChangeNotification;

// 編輯結(jié)束的通知

UIKIT_EXTERN NSString * const UITextViewTextDidEndEditingNotification;

應(yīng)用

設(shè)置鏈接樣式

UITextView * textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 100, 300, 50)];

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"這是一個(gè)鏈接:www.123456.com"];

[attributedString addAttribute:NSLinkAttributeName

value:@"url1://www.baidu.com"

range:NSMakeRange(7, 14)];

NSDictionary *linkAttributes = @{NSForegroundColorAttributeName: [UIColor greenColor],

NSUnderlineColorAttributeName: [UIColor lightGrayColor],

NSUnderlineStyleAttributeName: @(NSUnderlinePatternSolid)};

textView.linkTextAttributes = linkAttributes;

textView.attributedText? ? = attributedString;

textView.delegate? ? ? ? ? = self;

textView.editable? ? ? ? ? = NO; // 可編輯狀態(tài)不能點(diǎn)擊鏈接

[self.view addSubview:textView];

// 要實(shí)現(xiàn)代理

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {

if ([[URL scheme] isEqualToString:@"url1"]) {

NSString * url = [URL host];

NSLog(@"%@",url);

// 在這里利用url做點(diǎn)什么事情......

return NO;

}

return YES;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吮龄,隨后出現(xiàn)的幾起案子檬某,更是在濱河造成了極大的恐慌,老刑警劉巖螟蝙,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恢恼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡胰默,警方通過(guò)查閱死者的電腦和手機(jī)场斑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)牵署,“玉大人漏隐,你說(shuō)我怎么就攤上這事∨福” “怎么了青责?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵挺据,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我脖隶,道長(zhǎng)扁耐,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任产阱,我火速辦了婚禮婉称,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘构蹬。我一直安慰自己王暗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布庄敛。 她就那樣靜靜地躺著俗壹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪藻烤。 梳的紋絲不亂的頭發(fā)上策肝,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音隐绵,去河邊找鬼之众。 笑死,一個(gè)胖子當(dāng)著我的面吹牛依许,可吹牛的內(nèi)容都是我干的棺禾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼峭跳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼膘婶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蛀醉,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悬襟,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拯刁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體脊岳,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年垛玻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了割捅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帚桩,死狀恐怖亿驾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情账嚎,我是刑警寧澤莫瞬,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布儡蔓,位于F島的核電站,受9級(jí)特大地震影響疼邀,放射性物質(zhì)發(fā)生泄漏喂江。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一檩小、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烟勋,春花似錦规求、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至沮尿,卻和暖如春丛塌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背畜疾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工赴邻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啡捶。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓姥敛,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親瞎暑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子彤敛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容