iOS 개발 그런 일 - iOS 상용 디자인 모델 - 위탁 모델 사례 실현

사례
UITextFieldDelegate 를 예 로 들 어 의뢰 의 사용 을 설명 하 겠 습 니 다.UITextFieldDelegate 는 컨트롤 UITextField 의 의뢰 로 컨트롤 의 의뢰 는 주로 컨트롤 이벤트 에 응답 하거나 다른 대상 을 제어 합 니 다.UITextField 뿐만 아니 라 WebView, UITableView 등 컨트롤 에 도 해당 하 는 의뢰 대상 이 있다.
UITextFieldDelegate 의 API 문 서 를 엽 니 다. 편집 방법 은 4 개 이 고 다른 방법 은 3 개 입 니 다.
여기 서 저 희 는 편집 과정 에서 메 시 지 를 보 내 고 UITextField 편집 과정 에서 UITextFieldDelegate 의뢰 대상 과 상호작용 을 합 니 다.
텍스트 상자 편집 시작 전후 에 메 시 지 를 보 냅 니 다. textField Should BeginEditing: 과 textFieldDid BeginEditing: 편집 종료 전후 에 메 시 지 를 보 냅 니 다. textField Should EndEditing: 과 textFieldDid EndEditing:.
텍스트 상자 편집 전후 에 무슨 일이 일 어 났 는 지 보 여주 기 위해 서 는 간단 한 텍스트 상자 프로젝트 를 작성 해 야 합 니 다. 화면 에 텍스트 상자 가 하나 밖 에 없습니다.
보기 컨트롤 러 ViewController 에서 UITextFieldDelegate 를 실현 합 니 다. ViewController 는 UITextField 의 의뢰 대상 입 니 다.ViewController. h 코드 는 다음 과 같 습 니 다.
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *textField;

@end

h 파일 에서 ViewController 는 UITextFieldDelegate 프로 토 콜 을 실 현 했 습 니 다. UITextField 를 약 하 게 인용 하 는 '출력 구' ('출력 구' 개념 은 UIView 와 컨트롤 1 장 에서 자세히 소개 합 니 다) 로 정의 합 니 다.
ViewController. m 코드 는 다음 과 같 습 니 다.
@implementation ViewController

- (void)viewDidLoad

{

    [super viewDidLoad];

    self.textField.delegate = self;

}

#pragma mark — UITextFieldDelegate method

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

{

    NSLog(@”call textFieldShouldBeginEditing:”);

    return YES;

}

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

    NSLog(@”call textFieldDidBeginEditing:”);

}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

{

    NSLog(@”call textFieldShouldEndEditing:”);

    return YES;

}

- (void)textFieldDidEndEditing:(UITextField *)textField

{

    NSLog(@”call textFieldDidEndEditing:”);

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField

{

    NSLog(@”call textFieldShouldReturn:”);

    [textField resignFirstResponder];

    return YES;

}

@end

m 파일 에서 view DidLoad 방법 self. textField. delegate = self 문 구 는 매우 중요 합 니 다. 의뢰 대상 ViewController 를 텍스트 상자 대상 에 배분 합 니 다. 코드 를 통 해 IB 도 구 를 통 해 연결 할 수 있 습 니 다.스토리 보드 파일 을 열 고 텍스트 상자 컨트롤 을 오른쪽 클릭 하고 메뉴 를 팝 업 합 니 다. Outlets (출력 구) 아래 에 있 는 delegate 뒤의 원 을 마우스 로 끌 어 당 겨 View Controller 에서 마 우 스 를 풀 어 줍 니 다.
이렇게 코드 를 실행 합 니 다. 텍스트 상 자 를 만 져 서 편집 상태 에 있 을 때 로그 에서 출력 합 니 다.
call textFieldShouldBeginEditing:
call textFieldDidBeginEditing:
입력 완료 "return" 키 를 누 르 면 키 보드 를 닫 고 편집 상 태 를 끝 냅 니 다. 로그 에서 출력:
call textFieldShouldReturn:
call textFieldShouldEndEditing:
call textFieldDidEndEditing:
textField ShouldReturn: "return" 키 를 누 르 면 보 내 는 메시지 입 니 다.우 리 는 이 메 시 지 를 통 해 키 보드 를 닫 습 니 다.
더 복잡 한 컨트롤 (예 를 들 어 UITableView) 은 위탁 프로 토 콜 (UITableView Delegate) 외 에 데이터 원본 프로 토 콜 (UITableView DataSource) 도 있다.데이터 원본 은 의뢰 와 마찬가지 로 위탁 디자인 모델 의 응용 이 고 의뢰 대상 은 주로 컨트롤 대상 의 사건 과 상태 변화 에 응답 하 며 데이터 원본 대상 은 컨트롤 대상 에 게 데 이 터 를 제공 합 니 다.주의해 야 할 것 은 의뢰 중의 방법 은 실현 할 때 선택 할 수 있 고 데이터 소스 의 방법 은 일반적으로 반드시 실현 되 어야 한 다 는 것 이다.

좋은 웹페이지 즐겨찾기