子ビューのコンテンツの接触を遅らせる特定のタイプの親ビューを扱うときには、あなたが記述する効果がかなり一般的です。ソリューションは通常、親ビューのプロパティを設定するだけで簡単です:delaysContentTouches
。
私はこれを覚えています.10のうち9回、これが原因です。
しかし、UIPageViewControllerの場合、デフォルトの動作はUIQueuingScrollView
で、そのプロパティは公開されません。これを回避するには醜いしかし効果的な方法は、あなたのUIPageViewController
のサブビューを掘り起こして、UIGestureRecognizers
があり、delaysTouchesBegan = NO
と設定されているものになるまでです。 、
githubのユーザー
bfeherによって回答
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
}
}
}
:あなたがここにあなたの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
にお答えしたいと思います。あなたのコードを読んでください。しかし、[問題を再現できるコードや情報がない限り]サポートはできません(http://stackoverflow.com/help/mcve)。それ以外の場合、私たちはただ盲目的に推測しています。あなたの問題を解決しただけではそれを再オープンするには不十分であることに注意してください - 実際にMCVEを提供する必要があります。 –
@Kyll私はすでに問題を解決しましたので、私はそれに答えることができるように質問を再開します: – Bhargav