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

iOS SDK基礎:UITextView和UITextViewDelegate

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

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

第一步:創建一個新的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”.

第二步:創建UITextView

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

通過代碼創建

點擊“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]; 

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

使用Interface Builder

你可以在.xib文件中創建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方法中,當特定事件發生時,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開發iOS開發學習設置UITextVie

2011-05-31 14:03:13

2013-05-28 16:44:24

iOS開發iOS SDK預覽文檔

2013-05-17 10:54:37

iOS開發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

2018-02-25 11:22:14

SDK代碼接口

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

2021-11-14 05:00:56

排查Sdk方式

2011-08-18 10:02:47

iPhone SDKOpenFlow

2011-08-18 09:52:13

iPhone SDKUIPageContr

2016-03-18 09:36:13

ios基礎框架

2013-05-30 15:53:17

iOS開發iOS SDKPopver

2011-07-06 13:45:58

iOS SDK
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品欧美一区二区三区久久久 | av毛片| 日韩成人性视频 | 日本一区二区电影 | 日本三级网站在线 | 亚洲国产高清高潮精品美女 | 天天操夜夜操免费视频 | 一区二区国产精品 | 国产九一精品 | 国产精品久久久久aaaa | 91精品久久久久久久久久 | 性做久久久久久免费观看欧美 | 久久一区二区免费视频 | 欧美一级在线观看 | 日韩成人免费在线视频 | 国产精品国产成人国产三级 | 毛片a级毛片免费播放100 | 91久久国产综合久久 | 国产视频二区 | 欧洲免费毛片 | 国产一区二区三区四区五区3d | 午夜国产一级片 | 中文字幕国产日韩 | 中文字幕99| 国产激情在线观看 | 久久精品二区亚洲w码 | 成人av片在线观看 | 看毛片网站 | 天天久 | 美女视频黄的免费 | 色婷婷综合网 | 国产1区 | 国产乱码精品1区2区3区 | 亚洲午夜av久久乱码 | 欧美精品一区二区三区在线播放 | 韩日视频在线观看 | 日韩高清成人 | 色片在线观看 | 青青草视频网站 | 欧洲一区二区视频 | 久久久久久成人 |