亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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.添加輕擊手勢(shì)

復(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];

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


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

Demo地址:iOSStrongDemo


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

GGPlaceholderTextView簡(jiǎn)介:
GGPlaceholderTextView也是對(duì)text操作,具體邏輯如下:

繼承UITextView,并設(shè)置placeholder屬性:
注冊(cè)開始編輯和結(jié)束編輯通知,然后對(duì)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
{
    //注冊(cè)通知
    [[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),如果你有類似需求,直接拿去用吧!具體用法請(qǐng)往下看。

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


相關(guān)文章

  • iOS如何利用一句話完成轉(zhuǎn)場(chǎng)動(dòng)畫

    iOS如何利用一句話完成轉(zhuǎn)場(chǎng)動(dòng)畫

    這篇文章主要給大家介紹了關(guān)于iOS如何利用一句話完成轉(zhuǎn)場(chǎng)動(dòng)畫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • TextField和TextView限制輸入字?jǐn)?shù)長(zhǎng)度

    TextField和TextView限制輸入字?jǐn)?shù)長(zhǎng)度

    這篇文章主要為大家詳細(xì)介紹了TextField和TextView限制輸入字?jǐn)?shù)長(zhǎng)度代碼,感興趣的小伙伴們可以參考一下
    2016-08-08
  • IOS 改變鍵盤顏色代碼

    IOS 改變鍵盤顏色代碼

    這篇文章主要介紹了IOS 改變鍵盤顏色代碼,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • iOS實(shí)現(xiàn)水平方向瀑布流

    iOS實(shí)現(xiàn)水平方向瀑布流

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)水平方向瀑布流的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Objective-C優(yōu)雅使用KVO觀察屬性值變化

    Objective-C優(yōu)雅使用KVO觀察屬性值變化

    這篇文章主要為大家介紹了Objective-C優(yōu)雅使用KVO觀察屬性值變化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 解決SDK注入權(quán)限驗(yàn)證安卓正常,IOS出現(xiàn)config fail的方法

    解決SDK注入權(quán)限驗(yàn)證安卓正常,IOS出現(xiàn)config fail的方法

    這篇文章主要介紹了解決SDK注入權(quán)限驗(yàn)證安卓正常,IOS出現(xiàn)config fail的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • iOS功能實(shí)現(xiàn)之列表的橫向刷新加載

    iOS功能實(shí)現(xiàn)之列表的橫向刷新加載

    現(xiàn)今已有越來越多的APP需要橫向刷新的需求,而橫向刷新加載的控件卻寥寥無幾,即使有也是集成起來非常的麻煩,恰巧最近項(xiàng)目中又用到了這個(gè)功能,所以干脆自己來造個(gè)輪子,方便大家使用。
    2016-08-08
  • iOS中setValue和setObject的區(qū)別詳解

    iOS中setValue和setObject的區(qū)別詳解

    setObject:ForKey: 是NSMutableDictionary特有的;setValue:ForKey:是KVC的主要方法。接下來通過本文給大家分享iOS中setValue和setObject的區(qū)別,需要的朋友參考下
    2017-02-02
  • 淺談IOS屏幕刷新ADisplayLink

    淺談IOS屏幕刷新ADisplayLink

    CADisplayLink是一個(gè)能讓我們以和屏幕刷新率相同的頻率將內(nèi)容畫到屏幕上的定時(shí)器。本文將介紹它的使用,感興趣的同學(xué),可以參考下。
    2021-06-06
  • iOS超出父控件范圍無法點(diǎn)擊問題解決

    iOS超出父控件范圍無法點(diǎn)擊問題解決

    這篇文章主要介紹了iOS超出父控件范圍無法點(diǎn)擊問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論