2013-06-09 29 views
7

Tôi gặp vấn đề này và tôi không thể tìm thấy bất kỳ đề cập nào khác về điều này ở bất cứ đâu. Về cơ bản, nếu tôi vô hiệu hóa nảy trong UIScrollView (do đó các dẫn xuất như UITableView cũng bị ảnh hưởng) có thể khiến chỉ báo cuộn bị kẹt nếu người dùng cuộn lên trên cùng, và sau đó, với cử chỉ khác, cố gắng tiếp tục cuộn bằng cách vuốt nhanh.Chỉ báo cuộn bị kẹt khi nảy bị tắt cho UIScrollView

Khi điều này xảy ra, chỉ báo cuộn sẽ không biến mất trừ khi người dùng cuộn lại hoặc nhấn vào chế độ xem cuộn. Vấn đề lớn nhất là scrollview sẽ nắm bắt tap đó và vì vậy nếu bạn cố gắng gõ vào nói một ô bảng, không có gì sẽ xảy ra lần đầu tiên.

Tôi đã thử nghiệm điều này chỉ với một ứng dụng barebones trên cả thiết bị của tôi và trình mô phỏng, và dường như đây chỉ là vấn đề chung với UIScrollView và tắt tính năng nảy; tuy nhiên, như tôi đã nói, tôi không thể tìm thấy bất kỳ đề cập nào khác về điều này trên internet.

Đây có phải là lỗi không? Đây có phải là hành vi mong đợi không? Tôi có làm điều gì sai? Nếu đây là lỗi, thì có ai biết về công việc xung quanh hay sửa chữa không?

+0

Tôi có cùng một vấn đề tương tự ngay bây giờ. Tôi đoán tôi sẽ cho phép nảy bây giờ ... Như bạn nói, khi vấn đề này xảy ra, vòi tiếp theo sẽ bị "nuốt" bởi chế độ xem bảng, để một ô phải được khai thác hai lần để được chọn, v.v ... – Jonny

+0

Xin chào các bạn, bạn có tìm thấy giải pháp cho hành vi này không? Cảm ơn. – apascual

Trả lời

0

Bạn đã thêm thao tác nhấn cho chế độ xem cuộn của mình chưa, nếu không thì hãy thử thêm nó?

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignsKeyboard)]; 
    [self.scrollView addGestureRecognizer:singleTap]; 
    singleTap.numberOfTapsRequired = 1; 
    singleTap.delegate = self; 

Add đại biểu UIGestureRecognizerDelegate trong file giao diện của bạn sau đó thực hiện các cử chỉ tap phương pháp delgate

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
if (self.scrollView.superview != nil) 
    { 
     if ([touch.view isKindOfClass:[UIButton class]]||[touch.view.superview.superview isKindOfClass:[UITableViewCell class]]||[touch.view.superview.superview.superview isKindOfClass:[UITableViewCell class]]||[touch.view.superview isKindOfClass:[UITableViewCell class]]) 
      // we touched our control surface 
     { 
      return NO; // ignore the touch 
     } 

    } 

    return YES; // handle the touch 
} 

// Thực hiện các hành động khác trên cuộn cảm ứng như từ chức bàn phím, sử dụng nếu cần thiết

-(void) resignsKeyboard 
{ 
    [self.view endEditing:YES]; 
    [self.scrollView setContentOffset:CGPointMake(0,0) animated:YES]; 
} 
Các vấn đề liên quan