最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS應(yīng)用開發(fā)中使UITextField實(shí)現(xiàn)placeholder屬性的方法

 更新時(shí)間:2016年04月13日 09:21:40   作者:李剛  
這篇文章主要介紹了iOS應(yīng)用開發(fā)中使UITextField實(shí)現(xiàn)placeholder屬性的方法,示例代碼為傳統(tǒng)的Objective-C語言,需要的朋友可以參考下

我們都知道iOS開發(fā)中的UITextField有個(gè)placeholder屬性,placeholder可以很方便引導(dǎo)用戶輸入。但是UITextView卻沒有placeholder屬性。

一、猥瑣的方法

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

  • 把UITextView的text當(dāng)placeholder使用。
  • 在開始編輯的代理方法里清除placeholder。
  • 在結(jié)束編輯的代理方法里在設(shè)置placeholder。

實(shí)現(xiàn)方法:

1.創(chuàng)建UITextView:

復(fù)制代碼 代碼如下:

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

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

別忘了設(shè)置UITextView的代理,因?yàn)楹竺嫖覀円玫経ITextView的兩個(gè)代理方法。

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

復(fù)制代碼 代碼如下:

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

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


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

3.結(jié)束編輯的代理方法:

復(fù)制代碼 代碼如下:

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

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

4.添加輕擊手勢

復(fù)制代碼 代碼如下:

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

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


至此,就很猥瑣的實(shí)現(xiàn)了placeholder功能。為了方便測試,我加了一個(gè)手勢。作用是用鍵盤消失,這樣可以測試結(jié)束編輯的時(shí)候placeholder會(huì)不會(huì)顯示。

Demo地址:iOSStrongDemo


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

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

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

復(fù)制代碼 代碼如下:

GGPlaceholderTextView.h

#import <UIKit/UIKit.h>

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

@end


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

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


以上就是關(guān)于GGPlaceholderTextView的實(shí)現(xiàn),如果你有類似需求,直接拿去用吧!具體用法請往下看。

實(shí)踐:

復(fù)制代碼 代碼如下:

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


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


相關(guān)文章

  • iOS中block變量捕獲原理詳析

    iOS中block變量捕獲原理詳析

    這篇文章主要給大家介紹了關(guān)于iOS中block變量捕獲原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù)

    IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了IOS-MVC層讀取服務(wù)器接口JSON數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • iOS如何獲取漢字(簡體中文)筆畫數(shù)詳解

    iOS如何獲取漢字(簡體中文)筆畫數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于iOS如何獲取漢字(簡體中文)筆畫數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS如何為導(dǎo)航欄添加播放動(dòng)畫

    iOS如何為導(dǎo)航欄添加播放動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了iOS如何為導(dǎo)航欄添加播放動(dòng)畫的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • iOS實(shí)現(xiàn)從背景圖中取色的代碼

    iOS實(shí)現(xiàn)從背景圖中取色的代碼

    這篇文章主要介紹了iOS實(shí)現(xiàn)從背景圖中取色的代碼,感興趣的小伙伴們可以參考一下
    2016-03-03
  • IOS登錄頁面動(dòng)畫、轉(zhuǎn)場動(dòng)畫開發(fā)詳解

    IOS登錄頁面動(dòng)畫、轉(zhuǎn)場動(dòng)畫開發(fā)詳解

    本篇文章通過詳細(xì)的步驟給大家詳細(xì)講述了IOS登錄頁面動(dòng)畫、轉(zhuǎn)場動(dòng)畫開發(fā)的詳細(xì)教程,有興趣的朋友參考學(xué)習(xí)下。
    2018-01-01
  • IOS 圖片存放3種方式的實(shí)現(xiàn)

    IOS 圖片存放3種方式的實(shí)現(xiàn)

    這篇文章主要介紹了IOS 圖片存放3種方式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 關(guān)于iOS 11的一些新特性適配實(shí)踐總結(jié)

    關(guān)于iOS 11的一些新特性適配實(shí)踐總結(jié)

    iOS 11 為整個(gè)生態(tài)系統(tǒng)的 UI 元素帶來了一種更加大膽、動(dòng)態(tài)的新風(fēng)格。下面這篇文章主要給大家總結(jié)介紹了關(guān)于iOS 11的一些新特性適配實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • iOS視頻編輯之添加音軌的方法

    iOS視頻編輯之添加音軌的方法

    本篇文章主要介紹了iOS視頻編輯之添加音軌的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • IOS 開發(fā)之實(shí)現(xiàn)取消tableView返回時(shí)cell選中的問題

    IOS 開發(fā)之實(shí)現(xiàn)取消tableView返回時(shí)cell選中的問題

    這篇文章主要介紹了IOS 開發(fā)之實(shí)現(xiàn)取消tableView返回時(shí)cell選中的問題的相關(guān)資料,希望通過本文能實(shí)現(xiàn)大家想要的功能,需要的朋友可以參考下
    2017-09-09

最新評論

乌恰县| 柳州市| 龙江县| 绥德县| 凯里市| 中阳县| 承德市| 固始县| 千阳县| 长白| 比如县| 山东省| 江孜县| 邓州市| 光泽县| 民乐县| 邵阳市| 长海县| 宜昌市| 华宁县| 交城县| 鄂托克前旗| 西盟| 章丘市| 习水县| 泸溪县| 镶黄旗| 临武县| 中卫市| 德保县| 密山市| 来宾市| 东阳市| 珲春市| 开原市| 蒙山县| 偏关县| 邻水| 五莲县| 大姚县| 岳阳市|