tháng tám là đủ tốt đẹp cho tôi, nhưng tôi đã tìm ra cách để làm cho nó thậm chí còn tốt hơn:
Kiểm tra nếu bảng đã về chế độ chỉnh sửa để quyết định xem nút nên thực hiện hành động của nó sẽ làm cho nó hoạt động như bình thường, nhưng vẫn có một vấn đề trong trải nghiệm người dùng:
Nếu người dùng muốn thoát khỏi chế độ chỉnh sửa, anh ta có thể nhấn vào bất kỳ vị trí nào trong ô để đạt được điều đó, bao gồm cả nút. Tuy nhiên, hành động của UIButton
vẫn được phân tích đầu tiên bởi ứng dụng và việc nhấn vào nút sẽ không thoát khỏi chế độ chỉnh sửa.
Các giải pháp tôi tìm thấy là để vô hiệu hóa tương tác người dùng của nút trong khi nhập chế độ chỉnh sửa, và reenabling nó khi nó được thực hiện:
// View with tag = 1 is the UIButton in question
- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath {
[(UIButton *)[[tableView cellForRowAtIndexPath:indexPath] viewWithTag:1] setUserInteractionEnabled:NO];
}
- (void)tableView:(UITableView *)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath {
[(UIButton *)[[tableView cellForRowAtIndexPath:indexPath] viewWithTag:1] setUserInteractionEnabled:YES];
}
Bằng cách này, kéo nút để vào chế độ chỉnh sửa sẽ không kích hoạt hành động của nút và chạm vào nó để thoát khỏi chế độ chỉnh sửa thực sự sẽ thoát khỏi chế độ chỉnh sửa.
Cũng nghĩ! Ngoài ra, 'UITableView' đã có một thuộc tính flag' editing' (getter 'isEditing'), do đó không cần phải tạo một cái. – Guilherme
Đó là sự giúp đỡ to lớn! –