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) 도 있다.데이터 원본 은 의뢰 와 마찬가지 로 위탁 디자인 모델 의 응용 이 고 의뢰 대상 은 주로 컨트롤 대상 의 사건 과 상태 변화 에 응답 하 며 데이터 원본 대상 은 컨트롤 대상 에 게 데 이 터 를 제공 합 니 다.주의해 야 할 것 은 의뢰 중의 방법 은 실현 할 때 선택 할 수 있 고 데이터 소스 의 방법 은 일반적으로 반드시 실현 되 어야 한 다 는 것 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IOS 개발 포스트 방식으로 서버 데이터 가져오기텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.