Tôi muốn thêm nhận dạng cử chỉ vuốt đơn giản vào dự án iPhone dựa trên chế độ xem của tôi. Cử chỉ theo mọi hướng (phải, xuống, trái, lên) nên được nhận ra.
Nó được nêu trong các tài liệu cho UISwipeGestureRecognizer:
Bạn có thể chỉ định nhiều hướng bằng cách chỉ định nhiều hằng số UISwipeGestureRecognizerDirection bằng toán hạng bitwise-OR. Hướng mặc định là UISwipeGestureRecognizerDirectionRight.
Tuy nhiên, đối với tôi nó không hoạt động. Khi tất cả bốn hướng được OR'ed, chỉ các thao tác vuốt trái và phải được nhận ra.
- (void)viewDidLoad {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionUp)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
[super viewDidLoad];
}
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
}
Tôi đã sửa lỗi này bằng cách thêm bốn trình nhận dạng vào chế độ xem nhưng tôi tò mò muốn biết tại sao nó không hoạt động như quảng cáo trong tài liệu?
- (void)viewDidLoad {
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionUp)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionDown)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
[super viewDidLoad];
}
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"Swipe received.");
}