11

Ngay bây giờ, UIPanGestureRecognizer của tôi nhận ra mọi chảo đơn, rất tuyệt và cần thiết, nhưng khi tôi sử dụng nó như một cử chỉ trượt để tăng và giảm giá trị của biến, trong phương pháp tôi chỉ muốn hành động thường xuyên. Nếu tôi tăng thêm 1 lần mỗi lần phát hiện giá trị tăng quá nhanh.Với UIPanGestureRecognizer, có cách nào để chỉ hành động thường xuyên như sau khi x nhiều pixel được quét không?

Có cách nào để thực hiện điều gì đó giống như, mỗi 10 pixel quét làm điều này hay điều gì đó tương tự?

+1

Tôi nghĩ bạn muốn đặt biến dựa trên mức độ người dùng đã quét, không một lần cho mỗi thư. –

+0

Chỉ cần nhắc nhở rằng translationInView cung cấp cho bạn khoảng cách ** TỪ BẮT ĐẦU ** của chảo, vì vậy nó hoàn toàn dễ sử dụng - chính xác như sử dụng điều khiển thanh trượt. – Fattie

Trả lời

18

Bạn đang tìm kiếm translationInView:, cho bạn biết khoảng cách giữa chảo đã tiến triển và có thể được kiểm tra theo khoảng cách tối thiểu của bạn. Giải pháp này không bao gồm trường hợp bạn đi qua lại theo một hướng với số lượng bằng khoảng cách tối thiểu, nhưng nếu điều đó quan trọng đối với kịch bản của bạn thì không quá khó để thêm vào.

#define kMinimumPanDistance 100.0f 

UIPanGestureRecognizer *recognizer; 
CGPoint lastRecognizedInterval; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didRecognizePan:)]; 
    [self.view addGestureRecognizer:recognizer]; 
} 

- (void)didRecognizePan:(UIPanGestureRecognizer*)sender { 
    CGPoint thisInterval = [recognizer translationInView:self.view]; 

    if (abs(lastRecognizedInterval.x - thisInterval.x) > kMinimumPanDistance || 
     abs(lastRecognizedInterval.y - thisInterval.y) > kMinimumPanDistance) { 

     lastRecognizedInterval = thisInterval; 

     // you would add your method call here 
    } 
} 
+0

Lưu ý rằng quá trình dịchInView cung cấp cho bạn khoảng cách ** TỪ BẮT ĐẦU CỦA PAN **. (Nó không phải là khoảng cách của 'phần gần đây nhất'.) Vì vậy, nó vô cùng dễ dàng để thiết lập một giá trị, dựa trên panning. Trong thực tế nó ** chính xác như sử dụng một thanh trượt **. Đó là một dòng mã .. yourValue = [sender translationInView: self.view] .x; và đó là nó. – Fattie

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