zoukankan      html  css  js  c++  java
  • 带placeHolder 的textView

    #import <UIKit/UIKit.h>

    @interface CXTextView : UITextView

    @property (strong, nonatomic) NSString *placeHolder;

    @property (strong, nonatomic) UIColor *placeHolderColor;

    @end

    #import "CXTextView.h"

    @interface CXTextView ()

    @property (nonatomic, assign)BOOL isEdit;

    @end

    @implementation CXTextView

    - (id)initWithFrame:(CGRect)frame

    {

        self = [super initWithFrame:frame];

        if (self) {

            // Initialization code

        }

        return self;

    }

    - (void)setPlaceHolder:(NSString *)placeHolder

    {

        _placeHolder = placeHolder;

        [self setNeedsDisplay];

    }

    - (void)setPlaceHolderColor:(UIColor *)placeHolderColor

    {

        _placeHolderColor = placeHolderColor;

        [self setNeedsDisplay];

    }

    - (BOOL)becomeFirstResponder

    {

        BOOL fist = [super becomeFirstResponder];

        if (fist) {

            self.isEdit = YES;

            [self setNeedsDisplay];

        }

        return fist;

    }

    - (BOOL)resignFirstResponder

    {

        BOOL resign = [super resignFirstResponder];

        if (resign) {

            self.isEdit = NO;

            [self setNeedsDisplay];

        }

        return resign;

    }

    - (void)drawRect:(CGRect)rect

    {

        if (_placeHolder && [self.text length] == 0 && !self.isEdit) {

            if (!_placeHolderColor) {

                [_placeHolderColor set];

            }else {

                [[UIColor grayColor] set];

            }

            UIFont *font = self.font;

            if (!font) font = [UIFont systemFontOfSize:17.f];

            [_placeHolder drawAtPoint:CGPointMake(5, 5) forWidth:rect.size.width withFont:font lineBreakMode:NSLineBreakByTruncatingTail];

        }

        [self.textColor set];

        [super drawRect:rect];

    }

    /*

    // Only override drawRect: if you perform custom drawing.

    // An empty implementation adversely affects performance during animation.

    - (void)drawRect:(CGRect)rect

    {

        // Drawing code

    }

    */

    @end

  • 相关阅读:
    程序员如何利用空闲时间挣零花钱
    常见的数据交互之跳转页面传值
    一个能让cin和scanf 一样快的方法:
    HDU 4901 DP
    POJ 2823 线段树 Or 单调队列
    POJ 3264 线段树 ST
    POJ 3468 线段树+状压
    POJ 2777 线段树
    QQ 临时会话+图标 HTML代码
    POJ 1463 Strategic game
  • 原文地址:https://www.cnblogs.com/ldc529/p/3831125.html
Copyright © 2011-2022 走看看