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

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

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

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

一、猥瑣的方法

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

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

實現(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的代理,因為后面我們要用到UITextView的兩個代理方法。

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; //點擊次數(shù)
tapGesture.numberOfTouchesRequired = 1; //點擊手指數(shù)
[self.view addGestureRecognizer:tapGesture];

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


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

Demo地址:iOSStrongDemo


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

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

繼承UITextView,并設(shè)置placeholder屬性:
注冊開始編輯和結(jié)束編輯通知,然后對text做相應(yīng)的操作
通過UIApplicationWillTerminateNotification通知,在APP退出的時候移除通知。
我把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的實現(xiàn),如果你有類似需求,直接拿去用吧!具體用法請往下看。

實踐:

復(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非常相似。當然,我封裝的比較簡單,github上也有一些朋友封裝帶placeholder屬性的UITextView。比如:TextViewPlaceholder。感興趣的童鞋可以去試用一下。


相關(guān)文章

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

    iOS中block變量捕獲原理詳析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

会宁县| 游戏| 海安县| 乌鲁木齐市| 齐河县| 会昌县| 衡南县| 桦甸市| 谢通门县| 政和县| 松江区| 马边| 六枝特区| 象山县| 手机| 海安县| 嘉鱼县| 东乡| 贵州省| 浮山县| 上虞市| 罗定市| 北流市| 金沙县| 阿合奇县| 黄山市| 武城县| 汉川市| 襄樊市| 都昌县| 石台县| 含山县| 桑植县| 绍兴县| 通辽市| 奇台县| 巴林左旗| 通渭县| 黔西县| 建始县| 遂昌县|