2016-03-01 15 views
5

tôi biết về lệnh này:Làm cách nào để bật/tắt cuộn trong UITableView?

self.tableView.scrollEnabled = true 

Câu hỏi đặt ra là: Tôi muốn khóa di chuyển theo vị trí scrollview. Đối với điều này tôi làm:

let topEdge = scrollView.contentOffset.y 
    let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50 

    if topEdge >= followersViewEdge { 
     self.tableView.scrollEnabled = true 
    } 

nó hoạt động, nhưng vấn đề là nó không khóa hoặc mở khóa cuộn ngay lập tức. Để khóa hoặc mở khóa cuộn UITableView, tôi cần nhả ngón tay ra khỏi màn hình và cuộn lại. Trong trường hợp này nó hoạt động.

Tôi muốn làm cho nó ngay lập tức, vì vậy nó khóa và mở khóa cuộn trong khi tôi đang vuốt trên màn hình. Tôi làm nó như thế nào?

CẬP NHẬT

Mã của tôi hoạt động. Không vấn đề gì. Vấn đề là tôi cần phải thực hiện những thay đổi này ngay lập tức, mà không cần đưa ngón tay của tôi ra khỏi màn hình.

Vì vậy, đừng trả lời tôi cách khóa cuộn! Tôi biết làm thế nào để làm điều này.

+0

thử 'scrollViewDidScroll' đại biểu? – zcui93

+0

@ zcui93 mã của tôi hoạt động. Vì vậy, vâng, tôi đã kết nối đại biểu. Vui lòng đọc kỹ –

+0

Không có gì bạn nói đã đề cập. – zcui93

Trả lời

1
  1. Chọn tableview
  2. chọn Thuộc tính insepector
  3. Trong phần xem di chuyển, bỏ cuộn thuộc tính Enabled
+0

Mã của tôi hoạt động. Không vấn đề gì. Vấn đề là tôi cần phải thực hiện những thay đổi này ngay lập tức, mà không cần thả ngón tay của tôi ra khỏi màn hình –

+0

Có phải bảng phân cảnh của bạn là chế độ xem phụ trên chế độ xem cuộn không? –

+0

có, có tableView bên trong của tôi ScrollView –

0

Bạn cần phải thiết lập các cử chỉ recognizer chảo để xem bảng của bạn và tiếp tục nghe người nghe.

Bằng cách tiếp cận, bạn có thể khóa nó.

if topEdge >= followersViewEdge { 
     self.tableView.scrollEnabled = true 
    } 

Bằng công cụ nhận dạng cử chỉ, bạn có thể khóa/mở khóa.

if(self.tableView.scrollEnabled) { 
     self.tableView.scrollEnabled = false 
    } else { 
     self.tableView.scrollEnabled = true 
    } 

Ví dụ

 // Added the Pan Recognizer for capture the touches 
    UIPanGestureRecognizer *panReconizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panReconizer:)]; 
    panReconizer.maximumNumberOfTouches = panReconizer.minimumNumberOfTouches = 1; 
    [self.tableView addGestureRecognizer:panReconizer]; 


    - (void)panReconizer:(UIPanGestureRecognizer *)pan { 
     NSLog(@" .............. pan detected!! ..................."); 
     if(self.tableView.scrollEnabled) { 
      self.tableView.scrollEnabled = false 
     } else { 
      self.tableView.scrollEnabled = true 
     } 
    } 
+0

sau khi thay đổi scrollEnabled Tôi cần phải phát hành ngón tay của tôi từ màn hình và di chuyển một lần nữa. Tôi muốn làm cho nó như là tiếp tục của cuộn đơn –

+0

Bây giờ tôi undstd usecase của bạn, sau đó bạn nên sử dụng cử chỉ pan. Xin tham khảo ví dụ cập nhật ở trên. –

+0

Bạn đề xuất thực hiện thay đổi khi chạm. Ngoài ra nó đòi hỏi một liên lạc khác để sử dụng tableView. Vì vậy, đó không phải là những gì tôi cần. Bạn có sử dụng ứng dụng Twitter dành cho iOS không? Tôi muốn tạo ra như màn hình trang hồ sơ –

0

Buộc contentOffset đến giá trị tối đa của bạn trong khi di chuyển:

let topEdge = scrollView.contentOffset.y 
let followersViewEdge = CGRectGetHeight(self.profileView.frame) - 50 

if topEdge >= followersViewEdge { 
    self.tableView.contentOffset.y = followersViewEdge 
} 
+0

và những gì nó sẽ cho tôi? –

+0

nó sẽ cung cấp cho bạn những gì bạn yêu cầu, tức là một tableView không thể cuộn nhiều hơn giá trị 'followersViewEdge' – tgyhlsb

+0

không, nó không giúp tôi chút nào. Nó hoạt động giống nhau và ngoài ra, cuộn nội dung của tôi xuống dưới cùng –

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