我是UITextView,我負責輸入多行資料欄位的角色,
讓使用者可以輸入多行的資料。
但我需要能夠幫我處理使用者輸入資料的工作,只要符合UITextViewDelegate的protocol協定,都可以接我的工作。
我繼承自UIControl,因此我擁有與使用者互動的基本能力。
讓使用者可以輸入多行的資料。
但我需要能夠幫我處理使用者輸入資料的工作,只要符合UITextViewDelegate的protocol協定,都可以接我的工作。
我繼承自UIControl,因此我擁有與使用者互動的基本能力。
第1步:建立一個名為"UIViewField_UITextViewDelegate"的"Single View Application"專案
第2步:拖拉UITextView至畫面中
第4步:建立UITextView的IBOutlet物件參考於ViewController中
- 4.1 對UITextView按右鍵,按任"New Referencing Outlet"右邊的圓點,並拖拉至ViewController類別中
- 4.2 於"Name"欄位輸入"textView",並按下"Connect"
- 4.3 確認textView Outlet建立完成
- 5.1 為"ViewController"加上"UITextViewDelegate" protocol協定,於UIViewController後方加上"<UITextViewDelegate>"
@interface ViewController : UIViewController <UITextViewDelegate>
@end
- 5.2 於"ViewController.m"檔中實作 "– textView:shouldChangeTextInRange:replacementText:"方法,處理當使用者按下鍵盤中Return鍵的作業,以表示使用者按下Return表示輸入完畢。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
//"\n"即表示Return鍵,當使用者按下Return鍵時,
//則透過resignFirstResponder方法結束編輯
if([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}
第6步:將實作"UITextViewDelegate"的ViewController(self),指派至UITextView的delegate屬性中,好將使用者於UITextView輸入資料的工作委派給ViewController(self)物件。當然,UITextView則會以"UITextViewDelegate"protocol協定將輸入的處理工作交給ViewController。
- (void)viewDidLoad
{
[super viewDidLoad];
//將實作UITextFieldDelegate的ViewController(self),
//指派給UITextFiled的delegate屬性中,
//好將使用者對UITextFiled輸入資料的處理工作,
//委派給ViewController(self)物件。
self.textView.delegate = self;
}
第7步:執行選取UITextView,此時會出現輸入鍵盤,使用者即可透過鍵盤輸入資料,並在按下Return鍵,關閉鍵盤。
檔案連結:UITextView_UITextViewDelegate.zip
更多關於UITextView與UITextViewDelegate的參考: