用UITextView模拟UITextField的placeHolder

用UITextView模拟UITextField的placeHolder

效果:

源码:

//
//  ViewController.m
//  TextView
//
//  Created by YouXianMing on 14/12/18.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "ViewController.h"

static NSString *placeHolderStr = @"User Name";

@interface ViewController ()<UITextViewDelegate>

@property (nonatomic, strong) UITextView  *textView;
@property (nonatomic, strong) UIButton    *button;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 反应的按钮
    self.button = [[UIButton alloc] initWithFrame:self.view.bounds];
    [self.button addTarget:self
                    action:@selector(buttonEvent)
          forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:self.button];

    // textView
    self.textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 20, 320, 200)];
    self.textView.layer.borderWidth = 1.f;
    self.textView.layer.borderColor = [UIColor grayColor].CGColor;
    self.textView.delegate  = self;
    self.textView.text      = placeHolderStr;
    self.textView.font      = [UIFont systemFontOfSize:20.f];
    self.textView.textColor = [UIColor grayColor];
    [self.view addSubview:self.textView];
}

#pragma mark - 代理方法
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
    // 设置编辑状态文字颜色
    textView.textColor = [UIColor blackColor];

    // 如果文字为placeHolder文字
    if ([textView.text isEqualToString:placeHolderStr]) {
        textView.text      = @"";
    }

    return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {

    // 如果长度为0,则显示placeHolder文字
    if (textView.text.length == 0) {
        textView.text = placeHolderStr;
        textView.textColor = [UIColor grayColor];
    }

    return YES;
}

/**
 *  反应的按钮
 */
- (void)buttonEvent {
    [self.textView resignFirstResponder];
}

@end

核心代码:

 

时间: 2024-11-02 07:26:10

用UITextView模拟UITextField的placeHolder的相关文章

iOS应用开发中使UITextField实现placeholder属性的方法_IOS

我们都知道iOS开发中的UITextField有个placeholder属性,placeholder可以很方便引导用户输入.但是UITextView却没有placeholder属性. 一.猥琐的方法 如何让UITextView也有placeholder功能呢?今天给各位分享一个比较猥琐的做法.思路大概是这样的: 把UITextView的text当placeholder使用. 在开始编辑的代理方法里清除placeholder. 在结束编辑的代理方法里在设置placeholder. 实现方法: 1.

iOS中 UITextView文本视图 技术分享

 UITextView:  文本视图相比与UITextField直观的区别就是UITextView可以输入多行文字并且可以滚动显示浏览全文.  UITextField的用处多,UITextView的用法也不少.常见UITextView使用在APP的软件简介.内容详情显示  小说阅读显示.发表空间内容输入.说说文本框.评论文本框等.UITextView的使用有它本身的代理方法,也有  继承于父类的方法.本身的方法有从开始编辑到结束编辑的整个过程的监听,继承的方法主要是继承于  UIScrollVi

ios基础控件之UITextView

多行文本控件UITextView继承UIScrollView:UIView控件,默认是带有滚动条的.UITextView和UITextField都是文本编辑.显示控件,它们功能和行为在很多方面都是相似的. UITextView与UITextField的区别主要在以下三点: UITextView是一个多行文本框,而UITextField只是单行文本框. UITextView没有继承UIControl控件,因此不能绑定IBAction事件处理 方法:也不能调用UIControl提供的addTarge

给TextView添加占位符

// // HYBTextView.h // // Created by huangyibiao on 14-6-3. // Copyright (c) 2014年 huangyibiao. All rights reserved. // #import <UIKit/UIKit.h> /*! * @brief 继承于UITextView,添加了placeholder支持,就像UITextField一样的拥有placeholder功能 * @author huangyibiao */ @int

iOS10中Messages独立应用与扩展插件详析

iOS10中Messages独立应用与扩展插件详析 一.引言         Messages是iOS系统中原生的信息应用,其既可以通过运营商网络发送短信息,也可以通过互联网进行类似微信类社交软件的即时聊天.但是由于其封闭性与功能的单一,使用其进行即时聊天的用户并不多.随着iOS10系统的推出,或许可以改变这一现状.在iOS10中,Messages的功能被扩展的十分强大,通过Messages,用户可以分享图片,音乐,视频,可以随手涂鸦,使用自定义的表情包,可以进行Apple Pay支付,购物,甚

iOS小技巧总结,有你不知道的么

在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)]; self.tableView.tableHeaderView = view; UITableView的plain样式下,取消区头停滞效果 - (void)scrollViewDidScroll:(UIScr

App开发团队必须知道的 iOS 11 更新点

本文讲的是App开发团队必须知道的 iOS 11 更新点,WWDC 2017 已经过去差不多一个季度了,最近随着 Xcode 9 正式版以及 iPhone 8.iPhone X 的发布,iOS 11 的全面适配也被提上了日程.我整理了一下更新点,包括开发.设计.产品甚至是市场都应该注意的点,分享出来希望对大家有所帮助. 新增框架 ARKit iOS 11 引入了新的 ARKit 框架,让您轻松创建无可比拟的 iPhone 和 iPad 增强现实体验. 通过将数字对象和信息与您周围的环境相融合,A

开发者所需要知道的iOS 11 SDK新特性

年纪大了过了能熬夜看 WWDC 的时代了,但是还是在小小宝的哭闹和妈妈大人换尿布的催促中起了个大早.于是算趁着"热乎"把 WWDC 2017 的 Keynote 看完了.和往年差不多,虽然 WWDC 是一个开发者会议,但是 Keynote 并不是专门针对我们开发者的,它还承担了公司状况说明,新品发布等功能.作为技术人员,可能接下来的 session 会更有意义.要用一句话来评价今年 Keynote 所展现出来的内容的话,就是小步革新.大的技术方面可以说只有 ARKit 可堪研究,但是我

开发者所需要知道的iOS6 SDK新特性

欢迎转载本文,但是转载请注明本文出处: http://2.gy/erSp iOS6 beta和相应的SDK已经放出了,WWDC2012要进入session环节了.iOS6无疑是这届WWDC的重点,在keynote上面对消费者展示了很多新鲜的特性,而之后的seesion对于开发者来说应该是更为重要.这里先大概把iOS6里新增的开发者可能用到的特性做个简单的整理.之后我也会挑一些自己感兴趣的session做一些整理和翻译工作,也算是对自己的一种锻炼吧-相关的笔记整理如下: Session 200 W