2010-05-03 24 views

Trả lời

20

Bạn đang đi đúng hướng. Trong touchesBạn nên lưu trữ vị trí mà người dùng chạm vào màn hình lần đầu tiên.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 
    self.startPosition = [touch locationInView:self]; 
} 

Mã tương tự trong lần chạmĐược cung cấp cho bạn vị trí cuối cùng. Bằng cách so sánh hai vị trí bạn có thể xác định hướng chuyển động. Nếu tọa độ x đã vượt quá một sự khoan dung nhất định, bạn có một swipe trái hoặc phải.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch *touch = [touches anyObject]; 
    CGPoint endPosition = [touch locationInView:self]; 

    if (startPosition.x < endPosition.x) { 
     // Right swipe 
    } else { 
     // Left swipe 
    } 
} 

Bạn không cần chạm vàoMua trừ khi bạn muốn phát hiện và theo dõi khi người dùng vẫn chạm vào màn hình. Nó cũng có thể là giá trị thử nghiệm mà người dùng đã di chuyển một khoảng cách tối thiểu trước khi quyết định họ đã thực hiện một swipe.

+0

quixoto là đúng, được xây dựng GestureRecognizer là tốt hơn. – fyasar

+0

tôi có thể sử dụng nó cho UITableview không? – Mashhadi

+0

Điều này khá lỗi thời, sử dụng 'UISwipeGestureRecognizer' sạch hơn nhiều (iOS 9) – Cbas

15

Nếu bạn sẵn sàng nhắm mục tiêu hệ điều hành iPhone 3.2 trở lên (tất cả iPad hoặc iPhone được cập nhật), hãy sử dụng đối tượng UISwipeGestureRecognizer. Nó sẽ làm điều này một cách tầm thường, điều này thật tuyệt vời.

36

Bạn sẽ sử dụng UISwipeGestureRecognizer Object để phát hiện sự Touch và hướng Swipe Trong

UIView hoặc bất cứ nơi nào trong iphone sdk.

UISwipeGestureRecognizer *rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipeHandle:)]; 
rightRecognizer.direction = UISwipeGestureRecognizerDirectionRight; 
[rightRecognizer setNumberOfTouchesRequired:1]; 

//add the your gestureRecognizer , where to detect the touch.. 
[view1 addGestureRecognizer:rightRecognizer]; 
[rightRecognizer release]; 

UISwipeGestureRecognizer *leftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipeHandle:)]; 
leftRecognizer.direction = UISwipeGestureRecognizerDirectionLeft; 
[leftRecognizer setNumberOfTouchesRequired:1]; 

[view1 addGestureRecognizer:leftRecognizer]; 
[leftRecognizer release]; 

- (void)rightSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer 
{ 
    NSLog(@"rightSwipeHandle"); 
} 

- (void)leftSwipeHandle:(UISwipeGestureRecognizer*)gestureRecognizer 
{ 
NSLog(@"leftSwipeHandle"); 
} 

Tôi nghĩ rằng đây giải pháp các tốt hơn cho vấn đề của bạn

+0

Cảm ơn bạn đã chia sẻ, nó hoạt động. – Signcodeindie

Các vấn đề liên quan