programing tip

UITableView 스크롤링 감지

itbloger 2020. 12. 28. 07:53
반응형

UITableView 스크롤링 감지


UITableView (KRTableView로)를 서브 클래 싱하고 네 가지 터치 기반 메서드 (touchesBegan, touchesEnded, touchesMoved 및 touchesCancelled)를 구현하여 UITableView에서 터치 기반 이벤트가 처리되는시기를 감지 할 수 있습니다. 기본적으로 감지해야하는 것은 UITableView가 위아래로 스크롤 될 때입니다.

그러나 UITableView를 서브 클래 싱하고 위의 메서드를 생성하면 UITableView 전체가 아니라 UITableViewCell 내에서 스크롤 또는 손가락 움직임이 발생할 때만 감지됩니다.

내 손가락이 다음 셀로 이동하자마자 터치 이벤트는 아무 작업도 수행하지 않습니다.

이것이 내가 UITableView를 서브 클래 싱하는 방법입니다.

#import "KRTableView.h"


@implementation KRTableView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];   
    NSLog(@"touches began...");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesMoved:touches withEvent:event];
  NSLog(@"touchesMoved occured");   
}

- (void)touchesCancelled:(NSSet*)touches withEvent:(UIEvent *)event {
    [super touchesCancelled:touches withEvent:event];
  NSLog(@"touchesCancelled occured");   
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  [super touchesEnded:touches withEvent:event];
  NSLog(@"A tap was detected on KRTableView");
}

@end

UITableView가 위아래로 스크롤되는시기를 어떻게 감지 할 수 있습니까?


이벤트 메서드를 가로 챌 필요가 없습니다. UIScrollViewDelegate프로토콜에 대한 문서를 확인하고 상황에 맞게 -scrollViewDidScroll:또는 -scrollViewWillBeginDragging:메소드를 구현하십시오 .


다음을 추가하고 싶습니다.

를 사용하는 경우 UITableView이미을 구현 UITableViewDelegate하여 테이블을 데이터로 채울 수 있습니다.

당신이해야 할 모든 방법 구현하는 것입니다, 그래서 UIScrollViewDelegate에 프로토콜 UITableViewDelegate에 부합 함을 선언합니다, -scrollViewWillBeginDragging그리고 -scrollViewDidScroll당신의 UITableViewDelegate 구현에 직접와 구현 클래스는 당신의 jQuery과에 대리인으로 설정되어있는 경우들이 자동으로 호출됩니다.

드래그와 스크롤뿐만 아니라 테이블에서 클릭을 가로 채고 싶다면 UITableViewCell을 확장하고 구현하고 거기에서 touchesBegan : 메소드를 사용할 수 있습니다. 이 두 가지 방법을 결합하면 사용자가 UITableView와 상호 작용할 때 필요한 대부분의 작업을 수행 할 수 있습니다.


내 실수였습니다. tableview를 다시로드하기 전에 메서드를 호출하려고했습니다. 다음 코드는이 문제를 해결하는 데 도움이되었습니다.

[mytableview reloadData];

[mytableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:btn.tag-1] atScrollPosition:UITableViewScrollPositionTop animated:YES];

참조 URL : https://stackoverflow.com/questions/1587855/detecting-uitableview-scrolling

반응형