iOS 애플 리 케 이 션 개발 에서 UITextField 를 placeholder 속성 으로 구현 하 는 방법

6434 단어 iOSUITextField
iOS 개발 중인 UITextField 에 placeholder 속성 이 있다 는 것 을 잘 알 고 있 습 니 다.placeholder 는 사용자 의 입력 을 편리 하 게 유도 할 수 있 습 니 다.하지만 UITextView 는 place holder 속성 이 없습니다.
찌 질 한 방법
어떻게 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 = @"jb51.net";
    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:@"jb51.net"]) {
            textView.text = @"";
            textView.textColor = [UIColor blackColor];
        }
    }

    편집 을 시작 하 는 프 록 시 방법 에서 UITextView 의 text 값 이 placeholder 라면 text 를 비우 고 textColor 를 실제 내용 색상 으로 설정 하여 검은색 이 라 고 가정 합 니 다.
    3.편집 을 끝 내 는 프 록 시 방법:

    - (void)textViewDidEndEditing:(UITextView *)textView {
        if (textView.text.length<1) {
            textView.text = @"jb51.net";
            textView.textColor = [UIColor grayColor];
        }
    }
    편집 을 끝 내 는 프 록 시 방법 에서 UITextView 의 text 값 이 비어 있 으 면 설정 할 place holder 를 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 가 표시 되 는 지 테스트 할 수 있 습 니 다.
    데모 주소:iOSStrongDemo
    일반적인 방법
    다음은 일반적인 방법 을 살 펴 보 겠 습 니 다.하하~그럼 이번 에는 UITextView 를 간단하게 포장 하 겠 습 니 다.일단 GGplaceholder TextView 라 고 이름 을 지 었 는데 GG 접 두 사 는 좀 제멋대로 보이 네요.
    GGplaceholder TextView 프로필:
    GGplaceholder TextView 도 text 에 대한 조작 입 니 다.구체 적 인 논 리 는 다음 과 같 습 니 다.
    UITextView 를 계승 하고 place holder 속성 을 설정 합 니 다.
    등록 시작 편집 및 종료 알림,그리고 text 에 해당 하 는 동작 을 합 니 다.
    UIApplication WillTerminateNotification 알림 을 통 해 앱 종료 시 알림 을 제거 합 니 다.
    나 는 GGplaceholder TextView 를 아래 에 썼 다.그러나 위 챗 에서 코드 를 보 는 것 은 불편 합 니 다.저 는 이미 코드 push 를 iOS StrongDemo 로 보 냈 습 니 다.다운로드 하 셔 도 됩 니 다.

    GGPlaceholderTextView.h

    #import <UIKit/UIKit.h>

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

    @end

    UITextField 와 유사 한 placeholder 속성 을 정의 합 니 다.

    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

    이상 은 GGplaceholder TextView 의 실현 에 관 한 것 입 니 다.비슷 한 수요 가 있 으 면 직접 가 져 가서 사용 하 세 요!구체 적 인 용법 은 아래 를 보 세 요.
    실천:
    
    

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

    봉 인 된 GGplaceholder TextView 를 사용 하면 UITextField 와 매우 비슷 하지 않 습 니까?물론 제 가 포장 한 것 은 비교적 간단 합 니 다.github 에 도 placeholder 속성 을 가 진 UITextView 를 포장 하 는 친구 들 이 있 습 니 다.예 를 들 어 TextView Place holder.관심 있 는 동 화 는 한번 신어 보 세 요.

    좋은 웹페이지 즐겨찾기