AJ学IOS 之微博项目实战(11)发送微博自定义TextView实现带占位文字
来源:互联网 发布:fgo下载完整数据卡住 编辑:程序博客网 时间:2024/06/05 18:40
AJ分享,必须精品
一:效果
二:代码:
由于系统自带的UITextField:和UITextView:不能满足我们的需求,所以我们需要自己设计一个。
UITextField:
1.文字永远是一行,不能显示多行文字
2.有placehoder属性设置占位文字
3.继承自UIControl
4.监听行为
1> 设置代理
2> addTarget:action:forControlEvents:
3> 通知:UITextFieldTextDidChangeNotification
UITextView:
1.能显示任意行文字
2.不能设置占位文字
3.继承自UIScollView
4.监听行为
1> 设置代理
2> 通知:UITextViewTextDidChangeNotification
NYTextView.h
//// Created by apple on 14-10-20.// Copyright (c) 2014年 heima. All rights reserved.// 增强:带有占位文字#import <UIKit/UIKit.h>@interface NYTextView : UITextView/** 占位文字 */@property (nonatomic, copy) NSString *placeholder;/** 占位文字的颜色 */@property (nonatomic, strong) UIColor *placeholderColor;@end
NYTextView.m
// Created by apple on 14-10-20.// Copyright (c) 2014年 heima. All rights reserved.//#import "NYTextView.h"@implementation NYTextView- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { // 不要设置自己的delegate为自己// self.delegate = self; // 通知 // 当UITextView的文字发生改变时,UITextView自己会发出一个UITextViewTextDidChangeNotification通知 [NYNotificationCenter addObserver:self selector:@selector(textDidChange) name:UITextViewTextDidChangeNotification object:self]; } return self;}- (void)dealloc{ [NYNotificationCenter removeObserver:self];}/** * 监听文字改变 */- (void)textDidChange{ // 重绘(重新调用) [self setNeedsDisplay];}- (void)setPlaceholder:(NSString *)placeholder{ _placeholder = [placeholder copy]; [self setNeedsDisplay];}- (void)setPlaceholderColor:(UIColor *)placeholderColor{ _placeholderColor = placeholderColor; [self setNeedsDisplay];}- (void)setText:(NSString *)text{ [super setText:text]; // setNeedsDisplay会在下一个消息循环时刻,调用drawRect: [self setNeedsDisplay];}- (void)setFont:(UIFont *)font{ [super setFont:font]; [self setNeedsDisplay];}- (void)drawRect:(CGRect)rect{// [NYRandomColor set];// UIRectFill(CGRectMake(20, 20, 30, 30)); // 如果有输入文字,就直接返回,不画占位文字 if (self.hasText) return; // 文字属性 NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSFontAttributeName] = self.font; attrs[NSForegroundColorAttributeName] = self.placeholderColor?self.placeholderColor:[UIColor grayColor]; // 画文字// [self.placeholder drawAtPoint:CGPointMake(5, 8) withAttributes:attrs]; CGFloat x = 5; CGFloat w = rect.size.width - 2 * x; CGFloat y = 8; CGFloat h = rect.size.height - 2 * y; CGRect placeholderRect = CGRectMake(x, y, w, h); [self.placeholder drawInRect:placeholderRect withAttributes:attrs];}@end
0 0
- AJ学IOS 之微博项目实战(11)发送微博自定义TextView实现带占位文字
- 猫猫学iOS 之微博项目实战(11)发送微博自定义TextView实现带占位文字
- AJ学IOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件
- AJ学IOS 之微博项目实战(5)微博自定义搜索框searchBar
- AJ学IOS 之微博项目实战(2)微博主框架-自定义导航控制器NavigationController
- AJ学IOS 之微博项目实战(7)程序启动新特性用UICollectionViewController实现
- AJ学IOS 之微博项目实战(13)发送微博调用相机里面的图片以及调用相机
- AJ学IOS 之微博项目实战(4)微博自定义tabBar中间的添加按钮
- AJ学IOS 之微博项目实战(6)导航控制器NavigationController 的滑动回退功能实现
- AJ学IOS 之微博项目实战(1)微博主框架-子控制器的添加
- AJ学IOS(17)UI之纯代码自定义Cell实现新浪微博UI
- AJ学IOS 之微博项目实战(8)用AFNetworking和SDWebImage简单加载微博数据
- AJ学IOS 之微博项目实战(3)微博主框架-UIImage防止iOS7之后自动渲染_定义分类
- AJ学IOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介
- AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等
- ios 自定义带占位文字(placeholder)的TextView
- iOS---自定义带占位文字placeholder的TextView
- 猫猫学iOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件
- AJ学IOS 之UIDynamic重力、弹性碰撞吸附等现象
- AJ学IOS 之控制器view显示中view的父子关系及controller的父子关系_解决屏幕旋转不能传递事件问题
- AJ学IOS 之微博项目实战(9)微博模型之时间相关重要操作,判断刚刚,昨天,今年等等
- linux shell中的变量PS1------定制linux shell提示符
- AJ学IOS 之微博项目实战(10)微博cell中图片的显示以及各种填充模式简介
- AJ学IOS 之微博项目实战(11)发送微博自定义TextView实现带占位文字
- AJ学IOS 之微博项目实战(12)发送微博自定义工具条代理实现点击事件
- AJ学IOS 之微博项目实战(13)发送微博调用相机里面的图片以及调用相机
- AJ学IOS 之BLOCK的妙用_利用block实现链式编程
- AJ学IOS 之tableView的下拉放大图片的方法
- AJ学IOS 之二维码学习,快速生成二维码
- AJ学IOS 之二维码学习,快速打开相机读取二维码
- nexus启动无法访问 添加RUN_AS_USER=root也不行
- AJ学IOS 之ipad开发qq空间项目横竖屏幕适配