/// 싱글탭 설정
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapPiece:)];
tapGesture.numberOfTapsRequired = 1;
/// 더블탭 설정
UITapGestureRecognizer *dbTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapPiece:)];
dbTapGesture.numberOfTapsRequired = 2;
/// 더블탭시 싱글탭과 중복을 방지
[tapGesture requireGestureRecognizerToFail : dbTapGesture];
[dbTapGesture setDelaysTouchesBegan : YES];
[tapGesture setDelaysTouchesBegan : YES];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapPiece:)];
tapGesture.numberOfTapsRequired = 1;
/// 더블탭 설정
UITapGestureRecognizer *dbTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapPiece:)];
dbTapGesture.numberOfTapsRequired = 2;
/// 더블탭시 싱글탭과 중복을 방지
[tapGesture requireGestureRecognizerToFail : dbTapGesture];
[dbTapGesture setDelaysTouchesBegan : YES];
[tapGesture setDelaysTouchesBegan : YES];
/// 싱글탭 뷰에 추가
[self addGestureRecognizer:tapGesture];
[tapGesture release];
/// 더블탭 뷰에 추가
[self addGestureRecognizer:dbTapGesture];
[dbTapGesture release];
/// 핀치 이벤트 추가
UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scalePiece:)];
[pinchGesture setDelegate:self];
[self addGestureRecognizer:pinchGesture];
[pinchGesture release];
- (void)singleTapPiece:(UITapGestureRecognizer *)gestureRecognizer
{
if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"tap End");
}
}
{
if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"tap End");
}
}
- (void)doubleTapPiece:(UITapGestureRecognizer *)gestureRecognizer
{
if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"DoubleTap End");
}
}
{
if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"DoubleTap End");
}
}
// scale the piece by the current scale
// reset the gesture recognizer's rotation to 0 after applying so the next callback is a delta from the current scale
- (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer
{
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
SALog2(@"Pinch Start");
[gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
[gestureRecognizer setScale:1];
}else if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"Pinch End");
}
}
// reset the gesture recognizer's rotation to 0 after applying so the next callback is a delta from the current scale
- (void)scalePiece:(UIPinchGestureRecognizer *)gestureRecognizer
{
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
SALog2(@"Pinch Start");
[gestureRecognizer view].transform = CGAffineTransformScale([[gestureRecognizer view] transform], [gestureRecognizer scale], [gestureRecognizer scale]);
[gestureRecognizer setScale:1];
}else if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"Pinch End");
}
}
// shift the piece's center by the pan amount
// reset the gesture recognizer's translation to {0, 0} after applying so the next callback is a delta from the current position
- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer
{
UIView *piece = [gestureRecognizer view];
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
SALog2(@"Pan Start");
CGPoint translation = [gestureRecognizer translationInView:[piece superview]];
[piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)];
[gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
} else if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"Pan End");
}
}
// reset the gesture recognizer's translation to {0, 0} after applying so the next callback is a delta from the current position
- (void)panPiece:(UIPanGestureRecognizer *)gestureRecognizer
{
UIView *piece = [gestureRecognizer view];
[self adjustAnchorPointForGestureRecognizer:gestureRecognizer];
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) {
SALog2(@"Pan Start");
CGPoint translation = [gestureRecognizer translationInView:[piece superview]];
[piece setCenter:CGPointMake([piece center].x + translation.x, [piece center].y + translation.y)];
[gestureRecognizer setTranslation:CGPointZero inView:[piece superview]];
} else if([gestureRecognizer state] == UIGestureRecognizerStateEnded) {
SALog2(@"Pan End");
}
}
'iOS' 카테고리의 다른 글
Delegate를 사용시 주의할 점 (0) | 2011.07.21 |
---|---|
iOS 상단 Statusbar 반투명 상태로 사용하기 (0) | 2011.07.09 |
UIView 변형 방법 (0) | 2011.06.24 |
델리게이트 성격의 프로퍼티 설정 (0) | 2011.06.15 |
UIImage 카메라 롤에 추가 (0) | 2011.06.15 |