亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS應用開發中使UITextField實現placeholder屬性的方法

2020-07-26 03:22:41
字體:
來源:轉載
供稿:網友

我們都知道iOS開發中的UITextField有個placeholder屬性,placeholder可以很方便引導用戶輸入。但是UITextView卻沒有placeholder屬性。

一、猥瑣的方法

如何讓UITextView也有placeholder功能呢?今天給各位分享一個比較猥瑣的做法。思路大概是這樣的:

  • 把UITextView的text當placeholder使用。
  • 在開始編輯的代理方法里清除placeholder。
  • 在結束編輯的代理方法里在設置placeholder。

實現方法:

1.創建UITextView:

復制代碼 代碼如下:

UITextView *textViewPlaceholder = [[UITextView alloc] initWithFrame:CGRectMake(20, 70, SCREEN.width - 40, 100)];
textViewPlaceholder.backgroundColor = [UIColor whiteColor];
textViewPlaceholder.text = @"VeVB.COm";
textViewPlaceholder.textColor = [UIColor grayColor];
textViewPlaceholder.delegate = self;
[self.view addSubview:textViewPlaceholder];

初始化UITextView,給UITextView的text賦值,并且給UITextView的textColor屬性設置成灰色,讓其看起來更像placeholder。

別忘了設置UITextView的代理,因為后面我們要用到UITextView的兩個代理方法。

2.開始編輯的代理方法:

復制代碼 代碼如下:

- (void)textViewDidBeginEditing:(UITextView *)textView {

    if ([textView.text isEqualToString:@"VeVB.COm"]) {
        textView.text = @"";
        textView.textColor = [UIColor blackColor];
    }
}


在開始編輯的代理方法里面,判斷如果是UITextView的text的值是placeholder,那么,就清空text,并且把textColor設置成真正的內容顏色,假設是黑色。

3.結束編輯的代理方法:

復制代碼 代碼如下:

- (void)textViewDidEndEditing:(UITextView *)textView {
    if (textView.text.length<1) {
        textView.text = @"VeVB.COm";
        textView.textColor = [UIColor grayColor];
    }
}

在結束編輯的代理方法里,判斷如果UITextView的text值為空,那么,就要把需要設置的placeholder賦值給UITextView的text,并且將textColor屬性設置成灰色。

4.添加輕擊手勢

復制代碼 代碼如下:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
tapGesture.numberOfTapsRequired = 1; //點擊次數
tapGesture.numberOfTouchesRequired = 1; //點擊手指數
[self.view addGestureRecognizer:tapGesture];

//輕擊手勢觸發方法
-(void)tapGesture:(UITapGestureRecognizer *)sender
{
    [self.view endEditing:YES];
}


至此,就很猥瑣的實現了placeholder功能。為了方便測試,我加了一個手勢。作用是用鍵盤消失,這樣可以測試結束編輯的時候placeholder會不會顯示。

Demo地址:iOSStrongDemo


二、通常的方法
接下來來看比較通常的方法,哈哈~那么,這一次我將簡單的封裝一個UITextView。暫且取名叫GGPlaceholderTextView,GG前綴看著有點任性的哈。

GGPlaceholderTextView簡介:
GGPlaceholderTextView也是對text操作,具體邏輯如下:

繼承UITextView,并設置placeholder屬性:
注冊開始編輯和結束編輯通知,然后對text做相應的操作
通過UIApplicationWillTerminateNotification通知,在APP退出的時候移除通知。
我把GGPlaceholderTextView寫在下面。不過,微信里看代碼還是不太方便,我已經把代碼push到:iOSStrongDemo。你可以下載下來。

復制代碼 代碼如下:

GGPlaceholderTextView.h

#import <UIKit/UIKit.h>

@interface GGPlaceholderTextView : UITextView
@property(nonatomic, strong) NSString *placeholder;

@end


定義placeholder屬性,類似于UITextField。
復制代碼 代碼如下:

GGPlaceholderTextView.m

#import "GGPlaceholderTextView.h"

@implementation GGPlaceholderTextView

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self addObserver];
    }
    return self;
}

- (id)init {
    if (self = [super init]) {
        [self addObserver];
    }
    return self;
}

- (void)setPlaceholder:(NSString *)placeholder
{
    _placeholder = placeholder;
    self.text = placeholder;
    self.textColor = [UIColor grayColor];
}

-(void)addObserver
{
    //注冊通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBeginEditing:) name:UITextViewTextDidBeginEditingNotification object:self];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didEndEditing:) name:UITextViewTextDidEndEditingNotification object:self];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(terminate:) name:UIApplicationWillTerminateNotification object:[UIApplication sharedApplication]];
}

- (void)terminate:(NSNotification *)notification {
    //移除通知
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)didBeginEditing:(NSNotification *)notification {
    if ([self.text isEqualToString:self.placeholder]) {
        self.text = @"";
        self.textColor = [UIColor blackColor];
    }
}

- (void)didEndEditing:(NSNotification *)notification {
    if (self.text.length<1) {
        self.text = self.placeholder;
        self.textColor = [UIColor grayColor];
    }
}

@end


以上就是關于GGPlaceholderTextView的實現,如果你有類似需求,直接拿去用吧!具體用法請往下看。

實踐:

復制代碼 代碼如下:

GGPlaceholderTextView *textView = [[GGPlaceholderTextView alloc] initWithFrame:CGRectMake(0, 64, SCREEN.width , 200)];
textView.backgroundColor = [UIColor whiteColor];
textView.placeholder = @"VeVB.COm";
[self.view addSubview:textView];


經過封裝后的GGPlaceholderTextView,使用起來是不是跟UITextField非常相似。當然,我封裝的比較簡單,github上也有一些朋友封裝帶placeholder屬性的UITextView。比如:TextViewPlaceholder。感興趣的童鞋可以去試用一下。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频在线观看免费网址| 久久99国产精品久久久久久久久| 国产精品久久9| 欧美在线激情网| 久久久噜噜噜久久久| 久久久之久亚州精品露出| 亚洲字幕在线观看| 国产精品91一区| 国产精品美女久久久久久免费| 欧美亚洲第一页| 久久国产精品网站| 久久精品中文字幕免费mv| 中文字幕精品久久久久| 69视频在线免费观看| 日韩中文综合网| 亚洲字幕在线观看| 热久久视久久精品18亚洲精品| 日韩欧美精品免费在线| 国产精品国产自产拍高清av水多| 精品中文字幕久久久久久| 一本一本久久a久久精品牛牛影视| 秋霞成人午夜鲁丝一区二区三区| 欧洲成人在线视频| 国产精品狠色婷| 日韩av中文字幕在线免费观看| 成人福利在线观看| 国内精品小视频在线观看| 欧美大荫蒂xxx| 欧美一乱一性一交一视频| 欧美成在线观看| 精品小视频在线| 欧美日本中文字幕| 久久高清视频免费| 国产精品久久久久久久久久尿| 国产在线观看一区二区三区| 日韩高清有码在线| 中文字幕精品www乱入免费视频| 国产精品一区久久| 国产精品91在线观看| 欧美精品一区二区免费| 久久免费观看视频| 欧美丰满老妇厨房牲生活| 久久成人亚洲精品| 日韩在线观看网站| 91免费看片在线| 亚洲欧美日韩国产中文专区| 国内外成人免费激情在线视频网站| 日韩av在线天堂网| 欧美视频一区二区三区…| 中文字幕av一区| 久久久国产一区二区三区| 国产精品流白浆视频| 国产精品高潮呻吟久久av野狼| 亚洲国产日韩一区| 国产免费一区视频观看免费| 久久影视电视剧凤归四时歌| 欧美电影在线观看高清| 美女999久久久精品视频| 欧美大片大片在线播放| 亚洲电影av在线| 色视频www在线播放国产成人| 国产噜噜噜噜噜久久久久久久久| 91精品国产高清久久久久久91| 色噜噜狠狠狠综合曰曰曰| 91亚洲一区精品| 亚洲xxx视频| 国产精品午夜一区二区欲梦| 7m精品福利视频导航| 疯狂做受xxxx高潮欧美日本| 欧美午夜片在线免费观看| 狠狠躁天天躁日日躁欧美| 红桃视频成人在线观看| 日韩黄色高清视频| 国产69精品久久久久9| 欧美午夜精品久久久久久浪潮| 久久久爽爽爽美女图片| 日韩精品中文字幕久久臀| 55夜色66夜色国产精品视频| 最近2019免费中文字幕视频三| 91在线色戒在线| 成人国产亚洲精品a区天堂华泰| 国产精品久久久久久av| 色综合色综合网色综合| 亚洲美女av在线播放| 亚洲精品国产品国语在线| 欧美黄色片视频| 欧美日韩国产激情| 久久亚洲综合国产精品99麻豆精品福利| 国产日韩综合一区二区性色av| 国产精品久久97| 国产亚洲激情视频在线| 性亚洲最疯狂xxxx高清| 国外成人在线视频| 国产精品久久久久久久久久久久久| 亚洲欧美日韩国产中文| 日韩国产精品亚洲а∨天堂免| 亚洲乱码国产乱码精品精天堂| www.亚洲天堂| 久久久精品国产亚洲| 日韩精品有码在线观看| 日韩精品视频免费在线观看| 欧美成人一二三| 久久网福利资源网站| 日韩激情视频在线| 黑人巨大精品欧美一区二区一视频| 91av在线影院| 亚洲精品日韩欧美| 日韩中文字幕亚洲| 国产精品1区2区在线观看| 国产亚洲精品综合一区91| 亚洲精品国产精品国自产在线| 色婷婷久久av| 国产99久久久欧美黑人| 精品在线小视频| 国产精品偷伦视频免费观看国产| 国产视频亚洲视频| 亚洲精品成人av| 亚洲欧洲国产一区| 91精品国产91久久久久久久久| 蜜臀久久99精品久久久久久宅男| 欧美成人在线影院| 国产日产欧美a一级在线| 国产一区红桃视频| 精品欧美一区二区三区| 青青精品视频播放| 欧美在线不卡区| 97久久超碰福利国产精品…| xvideos成人免费中文版| 欧美乱大交xxxxx| 亚洲xxxx3d| 黄色一区二区在线| 精品国产1区2区| 伊人成人开心激情综合网| 久久成年人免费电影| 中文字幕欧美日韩| 久久99久国产精品黄毛片入口| 色妞色视频一区二区三区四区| 91久久精品国产91性色| 亚洲精品第一国产综合精品| 精品国产欧美成人夜夜嗨| 国产一区二区欧美日韩| 亚洲色图色老头| 欧美猛交ⅹxxx乱大交视频| 性色av一区二区三区在线观看| 欧美丰满片xxx777| 91亚洲人电影| 热99在线视频| 国产成人久久久精品一区| 成人春色激情网| 97精品视频在线播放| 欧美成人久久久| 日韩美女免费线视频| 亚洲精品国产精品国产自| 亚洲女人天堂av| 97精品免费视频| 久久久久久国产三级电影| 色久欧美在线视频观看| 亚洲黄色免费三级| 国产小视频国产精品| 久久久久国产一区二区三区| 欧美激情国产日韩精品一区18| 国产一区二区三区在线免费观看| 久久久久成人网| 欧美在线视频观看免费网站|