2009-08-06 38 views
21

Tôi đang cố vô hiệu hóa cuộn trong một UITableView khi chỉnh sửa UITextField được nhúng trong một UITableViewCell. Đây chỉ là để ngăn chặn các tế bào bị cuộn ra khỏi tầm nhìn khi chỉnh sửa (và cũng để tránh một số tế bào liên quan "tái chế" vấn đề). Trong khi googling xung quanh tôi đã nhìn thấy rằng ai đó gợi ý rõ ràng:tắt di chuyển trong UITableView (iPhone SDK 3.0)

tableView.scrollEnabled = NO: 

hoặc thậm chí

tableView.userInteractionEnabled = NO; 

này không hoạt động mặc dù (ít nhất là đối với tôi ... iPhone SDK 3.0, thử trên simulator) Tôi đặt các thuộc tính này thành NO, tôi thậm chí còn kiểm tra bằng cách ghi nhật ký rằng các thuộc tính được đặt thành NO, nhưng UITableView tiếp tục phản ứng bình thường với các sự kiện chạm. Và nó cũng vui vẻ cuộn. Tôi sẽ không lo lắng nếu ai đó trên mạng không tuyên bố rằng điều này thực sự hiệu quả.

Tôi có thiếu gì đó không? Hoặc là chỉ thay thế lớp con UITableView để làm cho một chức năng có sẵn trong siêu lớp của nó (UIScrollView) hoạt động trở lại?

Trả lời

49

Bạn đã thử sử dụng self.tableView.scrollEnabled = NO;?

Tôi thường thử mã đó từ web không hoạt động, đơn giản chỉ vì thiếu tiền tố. Tôi chỉ thử điều này mà không có vấn đề gì.

Tôi không biết điều này có hoạt động hay không khi bật và tắt động. Nó thực hiện tại nơi làm việc ít nhất là cho các thiết lập vĩnh viễn khi khởi tạo đối tượng ...

2

tôi đã cố gắng:

[(UIScrollView*)[self view] setScrollingEnabled:NO]; 

và nó làm việc ([tự xem] là quan điểm của tôi về bộ điều khiển xem hiện tại, ví dụ, một UITableView).

Có điều là, tôi nhận được một cảnh báo:

'UIScrollView' có thể không đáp ứng với '-setScrollingEnabled:'

Trong tất cả sự trung thực, khách sạn sẽ là "scrollEnabled", nhưng dù sao nó hoạt động với mã đã nói ở trên!

Vì vậy, cách "đúng" để làm những việc phải nộp là:

[(UIScrollView*)[self view] setScrollEnabled:NO]; 

Tại sao nó cũng hoạt động theo cách khác, là khó hiểu tôi ...

19

Nếu bạn đang sử dụng UITableViewController, bạn cũng có thuộc tính tableView, không cần đúc. Điều này phù hợp với tôi:

self.tableView.scrollEnabled = NO; 

Hãy cho tôi biết nếu điều đó phù hợp với bạn.

+0

có nó hoạt động bro, tại sao người ta chỉ hỏi câu hỏi và không bao giờ nghĩ đến cho đánh dấu cho ans đúng không? –

+0

Điều này không có tác dụng đối với trường hợp của tôi. Chỉ gọi phương thức setScrollEnabled đang làm việc cho tôi. Không phải là điều đó có ý nghĩa từ dưới mui xe, họ nên thực thi cùng một mã. – brodney

2

Không có câu trả lời nào trong số các câu trả lời của tôi. Chế độ xem bảng vẫn tiếp tục cuộn cho dù mọi scrollView đã bị tắt.

Cuối cùng, tôi đã tìm thấy giải pháp trong here, tuyên bố rằng UITableViewController thực hiện điều này "cho tôi" bất cứ khi nào bàn phím ẩn UITextView đang chỉnh sửa.

Giải pháp là kế thừa từ UIViewController thay vì UITableViewController và tự mình thực hiện chức năng bảng bắt buộc.

6

Bạn đã thử trên bảng phân cảnh chưa bỏ chọn cuộn đã được bật chưa?

Scrolling Enabled : NO

1

nếu bạn muốn di chuyển chỉ khi nội dung của nó không hiển thị sau đó thiết lập:

yourTableview.alwaysBounceVertical = NO;

đây nếu nội dung của bạn có thể nhìn thấy sau đó tableview của bạn sẽ không di chuyển

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