iOS系列UI篇——UITextView

UITextView继承自UIScrollerView,所以在使用的时候,我们可以用到一些UIScrollerView方法。为了能够详细说明,直接上代码。

下面就利用UITextView模仿一部分新浪微博发文字微博的功能,主要是为了对UITextView的属性和方法做一下介绍。

首先还是创建一个UITextView

#import "ViewController.h"
#define screen_width [UIScreen mainScreen].bounds.size.width
#define screen_height [UIScreen mainScreen].bounds.size.height
@interface ViewController ()<UITextViewDelegate>
{
    UITextView * _textView;
    UIButton * _endEd;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self createTextView];
    
    [self createNav];
}
#pragma mark 创建TextView
//创建TextView
- (void)createTextView
{
    float tw = screen_width;
    float th = screen_height;
    _textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 64, tw, th - 64)];
    _textView.delegate = self;
    _textView.contentSize = CGSizeMake(tw, th - 63);
    _textView.showsHorizontalScrollIndicator = NO;
    _textView.showsVerticalScrollIndicator = NO;
    [_textView becomeFirstResponder];
    [self.view addSubview:_textView];
}
再来一个导航栏
#pragma mark 创建一个导航栏
//创建导航栏
- (void)createNav
{
    UIView * nav = [[UIView alloc] initWithFrame:(CGRectMake(0, 0, screen_width, 64))];
    nav.backgroundColor = [UIColor colorWithRed:244 / 255.0f green:244 / 255.0f blue:244 / 255.0f alpha:0.8];
    [self.view addSubview:nav];
    _endEd = [[UIButton alloc] initWithFrame:(CGRectMake(300, 27, 50, 30))];
    [_endEd setTitle:@"发送" forState:(UIControlStateNormal)];
    [self endEdEnabled:NO];
    [_endEd addTarget:self action:@selector(endED) forControlEvents:(UIControlEventTouchUpInside)];
    [nav addSubview:_endEd];
}
//判断发送按钮是否可以点击及状态
- (void)endEdEnabled:(BOOL) isEnabled
{
    if (isEnabled == YES) {
        _endEd.enabled = YES;
        [_endEd setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
        _endEd.backgroundColor = [UIColor orangeColor];
    }
    else if (isEnabled == NO)
    {
        _endEd.enabled = NO;
        [_endEd setTitleColor:[UIColor grayColor] forState:(UIControlStateNormal)];
        _endEd.backgroundColor =  [UIColor colorWithRed:244 / 255.0f green:244 / 255.0f blue:244 / 255.0f alpha:1];
        
    }
}
//在导航栏里添加按钮
- (void)endED
{
    UIAlertView * a = [[UIAlertView alloc] initWithTitle:@"假装发送了" message:_textView.text delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
    [a show];
    [_textView resignFirstResponder];
}
接下来就关键了,我们很多功能都是通过代理来实现的,毕竟textView没有继承UIControl
#pragma mark TextViewDelegate的回调
//判断TextView里文字是否为空,如果不是,则可移除第一响应者
- (void)textViewDidChange:(UITextView *)textView
{
    if ([textView.text isEqualToString:@""]) {
        [self endEdEnabled:NO];
    }
    else
    {
        [self endEdEnabled:YES];
    }
}
//用户将要开始编辑时激发
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
    return YES;
}
//用户将要结束编辑时激发
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
    return YES;
}
//用户开始编辑时激发
- (void)textViewDidBeginEditing:(UITextView *)textView
{
    
}
//用户结束编辑时激发
- (void)textViewDidEndEditing:(UITextView *)textView
{
    
}
//当textView中指定范围的文字被替换时激发
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    return YES;
}
//当用户选中textView中某些文本时激发
- (void)textViewDidChangeSelection:(UITextView *)textView
{
    
}
#pragma mark UIScrollViewDelegate的回调
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [_textView resignFirstResponder];
}
ok~大功告成~~~~

下载代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值