제스처 인식 기 가 있 는 XIB 파일 을 불 러 오 려 면 어떤 문제 가 필요 합 니까?

프로그램 에서 제스처 를 검사 해 야 한다 면,예 를 들 어 클릭(tap),두 손가락 으로 누 르 기(pinch),드래그(pan),회전(rotation)을 통 해 UIGesture Recognizer 클래스 를 만 드 는 것 은 매우 간단 합 니 다.
다음은 제스처 인식 기 가 있 는 XIB 파일 을 불 러 오 는 데 중요 한 문 제 를 알려 드 리 겠 습 니 다.
먼저 UIView 에서 계승 할 클래스 를 새로 만 들 고 해당 하 는 XIB 파일 을 만 듭 니 다.

#import <UIKit/UIKit.h>
@interface ZHDemoView : UIView
+ (instancetype)demoView;
@end
현재 클래스 를 빠르게 만 들 수 있 도록 클래스 방법 을 제공 합 니 다.
m 에서 클래스 를 실현 하 는 방법 은 보통 XIB 에서 하나의 배열 을 불 러 오기 때문에 lastObject 방법 을 사용 합 니 다.

+ (instancetype)demoView
{
 NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"ZHDemoView" owner:nil options:nil];
 return [nibArray lastObject];
}
   awakeFromNib        
- (void)awakeFromNib
{
 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(click)];
 [self addGestureRecognizer:tap];
}
- (void)click
{
 NSLog(@"%s", __func__);
}
또한 테스트 용 XIB 는 이렇게 생 겼 습 니 다.

루트 컨트롤 러 에 이러한 View 를 추가 하고 실행 하고 클릭 합 니 다.
결국
2015-08-11 13:44:44.988 XIB
주의 하 다.
[1797:362096] -[ZHDemoView click]
모든 것 이 정상 입 니 다.그 다음 에 우 리 는 코드 에 제스처 를 추가 하지 않 고 XIB 에 직접 추가 합 니 다.(이전에 제스처 를 추가 한 코드 가 제거 되 었 습 니 다)

실행 결과:
2015-08-11 14:02:12.747 XIB
주의 하 다.
[1962:374487] -[UITapGestureRecognizer superview]: unrecognized selector sent to instance 0x7fe47af49c60
메시지 전송 오류 임 을 알 수 있 습 니 다.UITapGesture Recognizer 에는 슈퍼 뷰 방법 이 없습니다.
이 그림 으로 돌아 가.

Objects 표시 줄 아래 에 제스처 인식 기와 DemoView 두 대상 이 있 는 것 을 볼 수 있 습 니 다.XIB 가 불 러 온 대상 이 잘못 되 었 기 때 문 일 수 있 습 니까?
이전에 제 공 된 클래스 방법 중 에 lastObject 방법 을 사 용 했 기 때문에 이번 에는 firstObject 를 사용 해 보 겠 습 니 다.
클래스 변경 방법 은 다음 과 같 습 니 다.

+ (instancetype)demoView
{
 NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"ZHDemoView" owner:nil options:nil];
 return [nibArray firstObject];
}
결과:
2015-08-11 14:13:16.847 XIB
주의 하 다.
[2064:382058] -[ZHDemoView click:]
모든 것 이 정상이다.
요약:
XIB 에서 불 러 온 것 은 하나의 대상 배열 입 니 다.일반적인 상황 에서 우 리 는 하나의 대상 만 사용 해 야 합 니 다.이때 firstObject 나 lastObject 를 사용 해도 됩 니 다.하지만 제스처 인식 기 를 사용 하려 고 할 때 꺼 낸 대상 을 잘못 알 지 마 세 요.XIB 에 제스처 인식 기 를 직접 추가 하지 말고 코드 를 통 해 수 동 으로 만 드 는 것 이 더 안전 하고 유지 하기 쉬 운 것 을 권장 합 니 다.
이상 은 제스처 인식 기 가 있 는 XIB 파일 을 불 러 오 는 데 주의해 야 할 문 제 를 소개 하 며 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기