iphone 應用開發之二:UITextView控制項的詳細講解

來源:互聯網
上載者:User

 

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---清風

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.