成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS SDK基礎:UITextView和UITextViewDelegate

移動開發(fā) iOS
本文主要為大家介紹了iOS SDK的一些基礎知識,其中包括UITextView和UITextViewDelegate,希望對大家有所幫助。

我們計劃創(chuàng)建UITextView,實現UITextViewDelegate協議方法,使用NSLog檢查該方法何時被調用。我們還會接觸到如何在TextView中限制字符的數量,以及如何使用return鍵隱藏keyboard。看看如何在你的app中實現這些功能。

第一步:創(chuàng)建一個新的Xcode項目

運行Xcode,依次點擊File > New > Project,然后在左邊點擊iOS下面的"Application",右邊選中"Single View Application",然后點擊“next”。

接下來如圖中所示,在"Product Name"這一欄鍵入 "TextViewARC",并在Company Identifier中填入一個值,例如"com.companyName." 。在“Device Family”列表中選擇“iPhone”。不要勾 選 "Use Storyboards" 和 "Include Unit Tests" ,勾選 上"UseAutomatic Reference Counting" 。在點擊下一步之前,核 對"Use Automatic Reference Counting",然后點擊next,并選擇一個位置來存儲工程,然后點擊“create”.

第二步:創(chuàng)建UITextView

UITextView的創(chuàng)建可以通過純代碼或者使用 Interface Builder工具來完成,接下來我們主要介紹如何通過這兩種方法來創(chuàng)建一個UITextView。

通過代碼創(chuàng)建

點擊“ViewController.m”文件,然后輸入以下代碼:

  1. CGRect textViewFrame = CGRectMake(20.0f, 20.0f, 280.0f, 124.0f);  
  2. UITextView *textView = [[UITextView alloc] initWithFrame:textViewFrame];  
  3. textView.returnKeyType = UIReturnKeyDone;  
  4. [self.view addSubview:textView]; 

這樣創(chuàng)建了一個UITextView對象,并且添加到ViewController視圖中。

使用Interface Builder

你可以在.xib文件中創(chuàng)建UITextView。在Xcode的"Navigator"面板中點 擊 .xib文件,在左側文檔大綱"Document Outline"中點擊"View"。在菜單中點擊 View > Utilities > 展示Object Library。移至Object library的底部左下角,找 到"Text View",點擊選中,拖放至text view,調整text view位置至頂端, 高度修改為125像素。

第三步:隱藏鍵盤

隱藏鍵盤的方法很多,下面我們給出的代碼僅是其中的一種方法。點擊“ViewController.m”文件,添加以下方法來實現:

  1. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
  2. NSLog(@"touchesBegan:withEvent:"); 
  3.     [self.view endEditing:YES]; 
  4.     [super touchesBegan:touches withEvent:event]; 
  5. }

第四步:Delegate Protocol Methods

簡單說,一個委托協實現兩個對象之間的相互通信,在UITextViewDelegate方法中,當特定事件發(fā)生時,UITextView就可以傳遞協議, 比如text view開始編輯時。當方法被傳遞時,你就可以在協議中做自己的一些處理。以下例子演示下如何實現UITextView委托協議方法。

在實現delegate方法之前,為了將viewcontroller對象設置為uitextview的delegate,我們把textview的 delegate屬性設置為self。點擊“ViewController.m”文件,在viewDidLoad方法中,在 [self.view addSubview:textView];上面添加以下代碼:

  1. textView.delegate = self; 

使用Interface Builder,點擊"ViewController.xib"文件,選擇text view,點擊 View > Utilities > Show Connections Inspector。 在 "Connections Inspector"中點擊"Outlets"來打開它。點擊頁面上"delegate"向對面的圓圈,然后單擊該圓圈并 將其拖至“File‘s Owner”,以在text view和viewcontroller之間建立好連接。然后點擊 “ViewController.h”,輸入以下代碼以遵循UITextViewDelegate protocol。

  1. @interface ViewController : UIViewController <UITextViewDelegate> 

UITextView委托協議方法是可選的,也就是說使用UITextViewDelegate協議,但是不一定非得實現相關的協議方法。下邊是在它們上邊添加的方法。

  1. textViewShouldBeginEditing: and textViewDidBeginEditing: 

點擊“ViewController.m”文件,添加以下代碼:

  1. - (BOOL)textViewShouldBeginEditing:(UITextView *)textView{  
  2. NSLog(@"textViewShouldBeginEditing:");  
  3.     return YES;   
  4. }  
  5. - (void)textViewDidBeginEditing:(UITextView *)textView {  
  6. NSLog(@"textViewDidBeginEditing:");  
  7.     textView.backgroundColor = [UIColor greenColor];  

在text view獲得焦點之前會調用textViewShouldBeginEditing: 方法。當text view獲得焦點之后,并且已經是第 一響應者(first responder),那么會調用textViewDidBeginEditing: 方法。當text view獲得焦點時要想 做一些自己的處理,那么就在這里進行。在

我們的示例中,當text view獲得焦點時,是把text view的背景色設置為綠色.

  1. textViewShouldEndEditing: and textViewDidEndEditing: 

在之前的方法中加入以下代碼

  1. - (BOOL)textViewShouldEndEditing:(UITextView *)textView{  
  2. NSLog(@"textViewShouldEndEditing:");  
  3.     textView.backgroundColor = [UIColor whiteColor];  
  4.     return YES;  
  5. }  
  6. - (void)textViewDidEndEditing:(UITextView *)textView{  
  7. NSLog(@"textViewDidEndEditing:");  

當text view失去焦點之前會調用textViewShouldEndEditing。在示例中,我們使用textViewShouldEndEditing:讓背景色返回最初的顏色。

  1. textView:shouldChangeCharactersInRange:replacementString 

在之前的方法中加入以下代碼:

  1. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{  
  2.     NSCharacterSet *doneButtonCharacterSet = [NSCharacterSet newlineCharacterSet];  
  3.     NSRange replacementTextRange = [text rangeOfCharacterFromSet:doneButtonCharacterSet];  
  4.     NSUInteger location = replacementTextRange.location;  
  5.     if (textView.text.length + text.length > 140){  
  6.     if (location != NSNotFound){  
  7.         [textView resignFirstResponder];  
  8.     }  
  9.     return NO;  
  10.     }  
  11.     else if (location != NSNotFound){  
  12.     [textView resignFirstResponder];  
  13.     return NO;  
  14.     }  
  15.     return YES;  

每次用戶通過鍵盤輸入字符時,在字符顯示在text view之 前,textView:shouldChangeCharactersInRange:replacementString方法會被調用。這個方法中可以 方便的定位測試用戶輸入的字符,并且限制用戶輸入特定的字符。在上面的代碼中,我使用done鍵來隱藏鍵盤:通過檢測看replacement文本中是否包含newLineCharacterSet任意的字符。

如果有一個字符是來自newLineCharacterSet的,那么說明done按鈕被按過了,因此應該將鍵盤隱藏起來。另外,在用戶每次輸入內容時,還 檢測text view當前文本內容的長度,如果大于140個字符,則返回NO,這樣text view就可以限制輸入140個字符了。

  1. textViewDidChangeSelection: 

在之前的方法中加入以下代碼:

  1. - (void)textViewDidChangeSelection:(UITextView *)textView{  
  2. NSLog(@"textViewDidChangeSelection:");  

只有當用戶修改了text view中的內容時,textViewDidChange:方法才會被調用。在該方法中,可以對用戶修改了text view中 的內容進行驗證,以滿足自己的一些實際需求。例如,這里有一個應用場景:當text view限制最多可以輸入140個字符時,此時,在用戶修改文本內容 時,你希望顯示出還可以輸入多少個字符。那么每次文本內容被用戶修改的時候,更新并顯示一下剩余可輸入的字符個數即可。

  1. textViewDidChangeSelection: 

在之前的方法中加入以下代碼:

  1. - (void)textViewDidChangeSelection:(UITextView *)textView{ 
  2. NSLog(@"textViewDidChangeSelection:"); 

當用戶選擇text view中的部分內容,或者更改文本選擇的范圍,或者在text view中粘貼入文本時,函數textViewDidChangeSelection:將會被調用。該方法一般不使用,不過在某些情況下,非常有用。

第五步:測試Text Views

點擊Product>Run,或者點擊左上角的"Run",然后打開console窗口,并在text view中做一些字符輸入,刪除操作。當delegate方法被調用時,NSLog會打印出相應的字符串。

在模擬器上展示text view

 

責任編輯:閆佳明 來源: cocoachina
相關推薦

2013-07-29 11:34:46

iOS開發(fā)iOS開發(fā)學習設置UITextVie

2011-05-31 14:03:13

2013-05-28 16:44:24

iOS開發(fā)iOS SDK預覽文檔

2013-05-17 10:54:37

iOS開發(fā)iOS SDK調試技巧

2011-07-06 10:59:14

iOS 4 XCode iPhone

2013-04-27 10:07:51

飛利浦

2011-07-18 09:35:29

iPhone 框架

2011-07-29 13:40:00

Xcode iOS 4.2 iPhone

2011-03-18 08:39:28

iOS 4.2 SDKiOS SDK

2011-08-09 16:58:22

XCodeSDK

2011-07-22 10:01:58

IOS SDK Twitter

2011-08-16 15:17:44

IOS SDK

2012-01-01 22:07:28

jQMjQuery MobiHTHL5

2018-02-25 11:22:14

SDK代碼接口

2016-03-18 09:36:13

ios基礎框架

2011-08-18 10:02:47

iPhone SDKOpenFlow

2011-08-18 09:52:13

iPhone SDKUIPageContr

2021-11-14 05:00:56

排查Sdk方式

2011-07-06 13:45:58

iOS SDK

2011-08-18 11:19:13

IOS開發(fā)Core Plot S
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91人人看| 国产小u女发育末成年 | 国产精品一区二区欧美黑人喷潮水 | 国产精品激情 | 黄色毛片免费 | 国产精品永久免费 | 欧美日韩午夜精品 | 妹子干综合 | 国产精品久久久久久吹潮 | 午夜视频一区 | 国产高清视频 | 国产亚洲一区二区三区在线观看 | 国产一区视频在线 | 成人在线电影在线观看 | 男女午夜免费视频 | 日日碰狠狠躁久久躁婷婷 | 成人一区二区三区在线观看 | 看一级毛片 | 伊人超碰 | 国产日韩精品一区二区 | 日本欧美国产在线 | 亚洲精品自在在线观看 | 色吧综合网 | 国产在线一级片 | 精品视频在线一区 | 欧美一区二区三区视频在线播放 | 国产黄色网址在线观看 | 91视视频在线观看入口直接观看 | 九色.com | 日日夜夜操天天干 | 一区二区激情 | www国产亚洲精品久久网站 | 欧美一区免费 | 国产在线中文字幕 | a在线免费观看视频 | 亚洲国产成人精品女人久久久 | 国产一区二区三区久久久久久久久 | 欧美精品一区在线发布 | 国产欧美综合在线 | 精品国产精品国产偷麻豆 | 96国产精品久久久久aⅴ四区 |