0
지금까지 몇 시간 동안 디버깅하려했지만 동일한 문제가있는 온라인 사용자는 보지 못했습니다.UITableView 편집 - 탭하여 길게 누르는 것만 빼기
이전에 예상 한대로 삭제 기능이 작동했는데 일부 코드를 추가 한 후 신비하게도 빼기 버튼이 작동하지 않았습니다. 처음에 나는 그들이 전혀 작동하지 않는다고 생각했지만 약 5 초 동안 내 수돗물을 가졌다면, 그렇게해야하는 것처럼 삭제 버튼을 돌리고 표시 할 것이라고 생각했습니다.
Tableview에는 일부 제스처가 있지만 LongPress 제스처는 없습니다. 셀은 사용자 정의 셀이지만 처음 작업했을 때 문제가 발생하지 않았습니다. 어떤 도움을 주셔서 감사합니다. 관련 코드는 다음과 같습니다.
///
/// Pushes detail view for item swiped
///
- (IBAction)cellSwipeLeft:(UISwipeGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded && ![self isEditing]) {
NSIndexPath *gestureIndexPath = [self modelIndexPathForIndexPath:[self indexPathForUIGestureRecognizer:sender]];
// swiped left
}
}
///
/// Checks off reminder in list
///
- (IBAction)cellSwipeRight:(UISwipeGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded && ![self isEditing]) {
NSIndexPath *gestureIndexPath = [self modelIndexPathForIndexPath:[self indexPathForUIGestureRecognizer:sender]];
//swiped right
}
}
- (IBAction)cellTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded && ![self.tableView isEditing]) {
NSIndexPath *gestureIndexPath =
[self modelIndexPathForIndexPath:[self indexPathForUIGestureRecognizer:sender]];
// push detail view
}
}
///
/// Makes tableview rows editable
///
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
///
/// Returns editing style of tableview
///
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
return UITableViewCellEditingStyleDelete;
}
///
/// Toggles tableview editing
///
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
}
///
/// Deletes selected rows
///
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[self deleteReminderAtIndexPath:indexPath];
// Animate deletion
NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
[[self tableView] deleteRowsAtIndexPaths:indexPaths
withRowAnimation:UITableViewRowAnimationAutomatic];
}
}
왜 '- tableView : didSelectRowAtIndexPath :'대신 탭 인식기를 사용하고 있습니까? 제스처 인식기를 설정하는 방법을 보여줄 수 있습니까? – danielbeard
감사! 그것은 탭 제스처 문제를 파악할 때 올바른 방향으로 나를 지적했습니다. didSelectRowAtIndexPath를 얻을 수는 없지만 매우 잘 작동합니다. 셀을 탭하면 해당 메소드가 호출되지 않습니다. 나는 그 다음을 조사 할 것이다 – user1869469
당신은 뷰 컨트롤러에'UITableView' 델리게이트 속성을 설정해야한다. – danielbeard