설명하는 효과는 하위 뷰의 내용 접촉을 지연시키는 특정 유형의 부모 뷰를 처리 할 때 매우 일반적입니다. 솔루션은 일반적으로 상위 뷰의 속성을 설정하는 것처럼 간단합니다 : delaysContentTouches
.
저는 10 번 중 9 번, 이것이 범인이기 때문에 이것을 기억합니다.
그러나 UIPageViewController의 경우 기본 동작은 UIQueuingScrollView
이며이 속성은 해당 속성을 노출하지 않습니다. 이 문제를 해결하기위한 추악하고도 효과적인 방법은 UIGestureRecognizers
이 있고 delaysTouchesBegan = NO
으로 설정 될 때까지 UIPageViewController
의 하위보기를 파헤치는 것입니다. ,
let subViews: [UIView] = pageViewController.view.subviews
var viewHierarchy: [UIView] = [pageViewController.view]
viewHierarchy.appendContentsOf(subViews)
var i = 0
for viewToCheck in viewHierarchy {
viewToCheck.gestureRecognizers?.forEach { (recognizer) in
print("viewToCheck isa \'\(viewToCheck.self)\'")
for gestureRecognizer in viewToCheck.gestureRecognizers! {
print("\(i) gestureRecognizer: \(gestureRecognizer)")
i += 1
gestureRecognizer.delaysTouchesBegan = false
}
}
}
은 GitHub의 사용자
bfeher에 의해 답변 : 당신이 당신의
UIPageViewController
NSArray *subviews = self.pageViewController.view.subviews;
NSArray *viewHierarchy = [@[self.pageViewController.view] arrayByAddingObjectsFromArray:subviews];
int i = 0;
for (UIView *viewToCheck in viewHierarchy) {
for (UIGestureRecognizer *gestureRecognizer in viewToCheck.gestureRecognizers) {
NSLog(@"%d gestureRecognizer: %@", i++, gestureRecognizer);
gestureRecognizer.delaysTouchesBegan = NO;
}
}
를 초기화 한 후
당신은 여기에 당신이 선호하는 경우 신속 함께 스위프트 버전을 때렸다 단순히이 코드를 실행하여이 작업을 수행 할 수 for this issue
나는 이것을 풀어서 질문에 대답하고 싶습니다 – Bhargav
당신은 pr 코드를 작성하십시오. 그러나 우리가 [문제를 재현 할 수있는 코드 또는 정보가 없으면] 도움을 줄 수 없습니다 (http://stackoverflow.com/help/mcve). 그렇지 않으면, 우리는 단지 맹목적으로 추측하고 있습니다. 문제를 해결하면 다시 열 수 없다는 점에 유의하십시오. 실제로 MCVE를 제공해야합니다. –
@Kyll @Kyll 이미 문제를 해결 했으므로 질문을 다시 열어 대답 할 수 있습니다 :) – Bhargav