2013-05-30 25 views
8

Tôi muốn triển khai hành vi tùy chỉnh khi người dùng có một chạm xuống trên UITableViewCell. Điều gần nhất tôi có thể tìm thấy để nhận thông tin khi người dùng chạm xuống là phương thức ủy nhiệm tableView:willSelectRowAtIndexPath:. Tuy nhiên, tài liệu nêu rõ:Tùy chỉnh UITableViewCell Tô sáng trên Touch-Down

Phương pháp này không được gọi cho đến khi người dùng chạm vào một hàng và sau đó nhấc ngón tay ; hàng không được chọn cho đến lúc đó, mặc dù nó được đánh dấu khi chạm xuống. Bạn có thể sử dụng UITableViewCellSelectionStyleNone để tắt giao diện của ô sáng khi chạm xuống. Phương thức này không được gọi khi chế độ xem bảng ở chế độ chỉnh sửa (nghĩa là thuộc tính chỉnh sửa của chế độ xem được đặt thành CÓ) trừ khi chế độ xem bảng cho phép chọn trong khi chỉnh sửa (nghĩa là thuộc tính allowSelectionDuringEditing của chế độ xem bảng được đặt thành CÓ).

Bất kỳ lời khuyên nào về việc phát hiện cảm ứng này để thực hiện hành vi đánh dấu tùy chỉnh của tôi?

Cảm ơn!

+0

Bạn có thể làm cho một lớp con di động và sau đó thực hiện bất cứ điều gì thay đổi trong 'touchesBegan:' phương pháp, và sau đó loại bỏ những thay đổi trong 'touchesEnded:'. –

Trả lời

30

Bạn cần phải phân lớp UITableViewCell và ghi đè phương pháp:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated 

và có thể, tùy thuộc vào nhu cầu của bạn:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 

và đừng quên gọi siêu!


tài liệu của Apple:


Cập nhật (25/08/2015):

Trong Swift, tôi muốn làm một cái gì đó l ike này:

override var highlighted: Bool { 
     get { 
      return super.highlighted 
     } 
     set { 
      if newValue { 
       backgroundColor = UIColor.redColor() 
      } 
      else { 
       backgroundColor = UIColor.blackColor() 
      } 
      super.highlighted = newValue 
     } 
    } 
-3
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 

    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

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