13

tôi đã thêm mã này trong cellForRowAtIndexPathCách thêm Cử chỉ swipe vào ô UITableView?

UISwipeGestureRecognizer *gestureR = [[UISwipeGestureRecognizer alloc] 
              initWithTarget:self action:@selector(handleSwipeFrom:)]; 
     [gestureR setDirection:UISwipeGestureRecognizerDirectionRight];//|UISwipeGestureRecognizerDirectionRight)]; 
     [cell addGestureRecognizer:gestureR]; 

nó hoạt động tốt. Nhưng tôi muốn UISwipeGestureRecognizerDirectionLeft nên thêm như thế này

[gestureR setDirection:UISwipeGestureRecognizerDirectionLeft|UISwipeGestureRecognizerDirectionRight)]; 

Khi tôi kiểm tra với hướng và tiểu bang tôi luôn nhận được 3 = 3

- (void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {  

    NSLog(@"%d = %d",recognizer.direction,recognizer.state); 
} 

nếu tôi chỉ áp dụng cho một cử chỉ nó hoạt động tốt. Tôi cố gắng thêm hai cử chỉ một. nhưng nó sẽ chỉ đáp ứng một cử chỉ.

Cách thêm cử chỉ thứ hai. Tôi thêm trực tiếp vào một cử chỉ để TableView một trong những tế bào nhưng bây giờ sử dụng.

Trả lời

23

Hãy thử điều này

 
UISwipeGestureRecognizer* gestureR; 
gestureR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease]; 
gestureR.direction = UISwipeGestureRecognizerDirectionLeft; 
[view addGestureRecognizer:gestureR]; 

gestureR = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom)] autorelease]; 
gestureR.direction = UISwipeGestureRecognizerDirectionRight; // default 
[view addGestureRecognizer:gestureR]; 

Nếu bạn muốn giải quyết các chức năng khác nhau trên swipes trái và bên phải, chỉ cần thay đổi selectors.

+0

Xin cảm ơn, đã cố gắng như thế này ở trên nhưng không phải với chức năng khác nhau (selector) .. Tôi cố gắng và cho bạn biết ... +1 –

5

Tôi biết tuổi của nó từ khi bạn hỏi điều này. Nhưng hãy thử đọc lại dòng sau trong câu hỏi của bạn. [gestureR setDirection:UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionRight)];

Bạn có nhận thấy mình đã thêm UISwipeGestureRecognizerDirectionRight. Hai lần !!

: D

+0

Có .. Great catch .. Điều này chỉ là vấn đề đánh máy .. Tôi cập nhật lại Q .. –

+0

Cảm ơn. Đối với bản ghi chỉ '[gestureR setDirection: UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight)];' Hoạt động tốt. Đã thử và thử nghiệm trên Xcode 4.6.2 – holierthanthou84

7

Thay vì hai lần alloc, nó sẽ tốt hơn nếu bạn sử dụng

UISwipeGestureRecognizer* recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)]; 
[recognizer setDirection:UISwipeGestureRecognizerDirectionLeft+UISwipeGestureRecognizerDirectionRight]; 
[cell addGestureRecognizer:recognizer]; 

Và có được sự chỉ đạo của swipe trong hành động như:

-(void)handleSwipe:(UISwipeGestureRecognizer *) sender 
{ 
    if (sender.direction == UISwipeGestureRecognizerDirectionLeft) 
    { 
    //do something 
    } 
    else //if (sender.direction == UISwipeGestureRecognizerDirectionRight) 
    { 
    //do something 
    } 
} 
Các vấn đề liên quan