• UITableView


    1. #import <UIKit/UIKit.h>    
    2.     
    3. @interface TextViewController : UIViewController <UITextViewDelegate>    
    4. {    
    5.               UITextView *textView;    
    6. }    
    7.     
    8. @property (nonatomic, retain) UITextView *textView;    
    9.     
    10. @end    

    在.m文件中初始化这个textview,写入代码如下:

    C代码  收藏代码
    1. self.textView = [[[UITextView alloc] initWithFrame:self.view.frame]autorelease]; //初始化大小并自动释放    
    2.     
    3. self.textView.textColor = [UIColor blackColor];//设置textview里面的字体颜色    
    4.     
    5. self.textView.font = [UIFont fontWithName:@"Arial" size:18.0];//设置字体名字和字体大小    
    6.     
    7. self.textView.delegate = self;//设置它的委托方法    
    8.     
    9. self.textView.backgroundColor = [UIColor whiteColor];//设置它的背景颜色    
    10.       
    11. self.textView.text = @"Now is the time for all good developers tocome to serve their country. Now is the time for all good developers to cometo serve their country.";//设置它显示的内容    
    12.     
    13. self.textView.returnKeyType = UIReturnKeyDefault;//返回键的类型    
    14.     
    15. self.textView.keyboardType = UIKeyboardTypeDefault;//键盘类型    
    16.     
    17. self.textView.scrollEnabled = YES;//是否可以拖动    
    18.     
    19. self.textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;//自适应高度    
    20.   
    21. [self.view addSubview: self.textView];//加入到整个页面中    

    2. UITextView退出键盘的几种方式

    因为你点击UITextView会出现键盘,如果你退出键盘,有如下几种方式:

    (1)如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate。代码如下:

    C代码  收藏代码
    1. - (void)textViewDidBeginEditing:(UITextView *)textView {      
    2.     
    3.    UIBarButtonItem *done =    [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(leaveEditMode)] autorelease];      
    4.     
    5.    self.navigationItem.rightBarButtonItem = done;          
    6.     
    7. }      
    8.     
    9. - (void)textViewDidEndEditing:(UITextView *)textView {      
    10.     
    11.     self.navigationItem.rightBarButtonItem = nil;      
    12.     
    13. }      
    14.     
    15. - (void)leaveEditMode {      
    16.     
    17.     [self.textView resignFirstResponder];      
    18.     
    19. }      

    (2)如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。代码如下:

    C代码  收藏代码
    1. #pragma mark - UITextView Delegate Methods      
    2.     
    3. -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text      
    4.     
    5. {      
    6.     
    7.     if ([text isEqualToString:@" "]) {      
    8.     
    9.         [textView resignFirstResponder];      
    10.     
    11.         return NO;      
    12.     
    13.     }      
    14.     
    15.     return YES;      
    16.     
    17. }    

    这样无论你是使用电脑键盘上的回车键还是使用弹出键盘里的return键都可以达到退出键盘的效果。

    (3)还有你也可以自定义其他加载键盘上面用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。

    代码如下:

    C代码  收藏代码
    1. UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];      
    2.     
    3.     [topView setBarStyle:UIBarStyleBlack];      
    4.     
    5.     UIBarButtonItem * helloButton = [[UIBarButtonItem alloc]initWithTitle:@"Hello" style:UIBarButtonItemStyleBordered target:self action:nil];            
    6.     
    7.     UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];      
    8.     
    9.           
    10.     
    11.     UIBarButtonItem * doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];      
    12.     
    13.     NSArray * buttonsArray = [NSArray arrayWithObjects:helloButton,btnSpace,doneButton,nil];      
    14.     
    15.     [doneButton release];      
    16.     
    17.     [btnSpace release];      
    18.     
    19.     [helloButton release];      
    20.     
    21.     [topView setItems:buttonsArray];      
    22.     
    23.     [tvTextView setInputAccessoryView:topView];      
    24.     
    25. -(IBAction)dismissKeyBoard      
    26.     
    27. {      
    28.     
    29.     [tvTextView resignFirstResponder];      
    30.     
    31. }      

    (4)设置UITextView圆角问题

    做法是在 #import QuartzCore/QuartzCore.h 后,便能調用[textView.layer setCornerRadius:10]; 來把 UITextView 设定圓角

    (5)UITextView根据文本大小自适应高度

    通过实现文本字数来确定高度,如下:

    C代码  收藏代码
    1. 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!";      
    2.     
    3. CGSize  size = [desc sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(240, 2000) lineBreakMode:UILineBreakModeWordWrap];    

    只有UILabel需要定义的numberoflines为0,即不做行数的限制。如下:

    C代码  收藏代码
    1. [label  setNumberOfLines:0];      
    2. [label  setFrame:CGRectMake(40, 135, 240, size.height+10)];      
    3. [label setText:desc];     

    (6)UITextView自定选择文字后的菜单

    在ViewDidLoad中加入:

    C代码  收藏代码
    1. UIMenuItem *menuItem = [[UIMenuItem alloc]initWithTitle:@"分享到新浪微博" action:@selector(changeColor:)];    
    2. UIMenuController *menu = [UIMenuController sharedMenuController];    
    3. [menu setMenuItems:[NSArray arrayWithObject:menuItem]];    
    4. [menuItem release];    

    当然上面那个@selector里面的changeColor方法还是自己写吧,也就是说点击了我们自定义的菜单项后会触发的方法。

    然后还得在代码里加上一个方法:

    C代码  收藏代码
    1. -(BOOL)canPerformAction:(SEL)action withSender:(id)sender    
    2. {    
    3. if(action ==@selector(changeColor:))    
    4. {    
    5. if(textView.selectedRange.length>0)    
    6. return YES;    
    7. }    
    8. return NO;    
    9. }   
  • 相关阅读:
    Redis缓存穿透,缓存击穿,缓存雪崩
    Redis持久化机制
    Docker小白到实战之常用命令演示,通俗易懂
    分布式事务最终一致性-CAP框架轻松搞定
    gRPC四种模式、认证和授权实战演示,必赞~~~
    Docker小白到实战之开篇概述
    郑州 | 7月20日,想想都后怕
    避不开的分布式事务
    c++实现十大经典排序算法
    浏览器缓存机制总结
  • 原文地址:https://www.cnblogs.com/1995-08-29/p/UITableView.html
Copyright © 2020-2023  润新知