현재 Twitter (iPad) 유형 컨트롤을 다시 만들려고합니다. 대부분 온라인에서 사용할 수있는 모든 버전이 내가 개발중인 응용 프로그램 유형에 실제로 작동하지 않기 때문에 물론 더 잘할 수 있다고 생각합니다.) (그러나 생각보다 어렵습니다).nextResponder로 터치 기본보기
내가 원하는 것은 : 내가 제어
- 유연한 위치 iPhone 및 iPad 버전의보기 컨트롤러).
- 뷰 컨트롤러를 드래그 할 수 있지만 여전히 뷰 컨트롤러에서 모든 기능을 유지합니다.
내가 현재 가지고 무엇 : 그들은 내 컨트롤에 추가됩니다 뷰 컨트롤러에
- 좋은 위치. 내가 설정 한 규칙에 따라, 주위에 내가있는 UITableViewController를 추가 할 때, 나는 주위를 드래그 할 수있을 것인지 (등 최대 x 위치)
내 문제를 뷰 컨트롤러를 드래그
내 현재 솔루션은보기 컨트롤러가 내 컨트롤에 추가 될 때 모든 터치를 허용하는 서브 뷰를 뷰 컨트롤러와 동일한 크기로 추가한다는 것입니다. 이 벤트는 대리자를 사용하고 메서드를 호출하여 컨트롤로 전송됩니다. 이것은 잘 작동, 내 UITableViewController에 하위 뷰를 추가 할 때 이상한 동작이 있음을 인정합니다. 위아래로 스크롤하는 것은 UITableViewController에서 여전히 작동하지만 이러한 터치는 UITableViewController의 상단에서보기로 감지되지 않습니다. 테이블에서 셀을 선택하면 더 이상 작동하지 않습니다. 오버레이 UIView가 이러한 접촉을 수행하기 때문입니다.
나는이 같이있는 UITableViewController에 오버레이에 UIView를 추가
SNOverlayView* layover = [[SNOverlayView alloc] initWithFrame:CGRectMake(0,0, controllerWidth, self.frame.size.height)];
layover.delegate = self;
[controller.view addSubview:layover];
[layover release];
내 사용자 정의 오버레이 UIView의 모든 터치에 대한 다음 방법 중 몇 가지를 포함 방법 (시작 취소, 종료 및 이동) :
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([delegate respondsToSelector:@selector(overlayTouchesBegan:touches:event:)])
[delegate overlayTouchesBegan:self touches:touches event:event];
NSLog(@"%@", self.nextResponder);
[self.nextResponder touchesBegan:touches withEvent:event];
}
문서에서 알 수 있듯이 nextResponder를 호출하면 내보기 아래의 TableView도 접촉을 수신해야합니다. 그러나 이러한 방법은 화면을 터치하거나 옆으로 밀면 트리거됩니다. 위쪽에서 아래쪽으로 슬라이딩하면 이러한 메서드가 트리거되지 않으며 셀을 건드리지 않아도 UITableViewController에서 didSelectRowAtIndexPath가 트리거되지 않습니다. 이 메소드의 self.nextResponder는 UITableView입니다 (이 메소드의 NSLog가 출력 함).
나는 nextResponder 부분을 오해하고 있습니까? 내 UITableViewController를 수정하지 않을 때 이것이 가능하지 않습니까?
편집 :
|- Root UIView (1)
|-- Containment UIView which detects touches (2)
|---- UITableViewController (3)
문제는 지금 내 봉쇄보기 (2) 터치를 감지하지 않는다는 것입니다 : 내가 모든 ViewControllers을 포함하는 내 주요 UIView의 추가 구조를 업데이트.나는 그것을 더 아래에 언급 된 구조처럼 만들어 내 코드를 업데이트하려고합니다
|- Root UIView (1)
|-- Containment UIView (2)
|---- UIView detecting touches (4)
|---- UITableViewController (3)
하지만 내가 접촉을 감지 할 수있는 UIView를 얻을 수있는 방법을 모르겠습니다. UITableViewcontroller (3)을 UIView (2)에 추가하면 UIView가 터치 (4)를 감지하여 터치를 '훔치는'맨 위에 놓이기 때문입니다. 나는 오히려 (4)와 (3)의 순서를 바꿀 것이다.
적절한 형식을 사용하십시오. 그리 어렵지 않습니다. – vikingosegundo
알아, 문제는 내가 다른 나라에서 내 아이폰 에서이 게시됩니다. 죄송합니다. –