A ที่UIScrollViewเปิดใช้เพจจิ้งจะหยุดที่ความกว้างเฟรม (หรือความสูง) แบบทวีคูณ ขั้นตอนแรกคือการหาว่าคุณต้องการให้หน้าเว็บกว้างแค่ไหน ทำให้ความกว้างของไฟล์UIScrollView. จากนั้นกำหนดขนาดของมุมมองย่อยของคุณว่าคุณต้องการให้ใหญ่แค่ไหนและตั้งศูนย์ตามUIScrollViewความกว้างของความกว้างหลายเท่า
จากนั้นตั้งแต่ที่คุณต้องการที่จะเห็นหน้าอื่น ๆ ของหลักสูตรชุดclipsToBoundsเพื่อNOเป็น mhjoy ระบุ ส่วนเคล็ดลับตอนนี้คือการทำให้มันเลื่อนเมื่อผู้ใช้เริ่มลากนอกช่วงของUIScrollViewเฟรม วิธีแก้ปัญหาของฉัน (เมื่อไม่นานมานี้ฉันต้องทำสิ่งนี้) มีดังนี้:
สร้างUIViewคลาสย่อย (เช่นClipView) ที่จะมีUIScrollViewและเป็นมุมมองย่อย โดยพื้นฐานแล้วควรมีกรอบของสิ่งที่คุณคิดว่าUIScrollViewจะมีภายใต้สถานการณ์ปกติ วางอยู่ในใจกลางของUIScrollView ClipViewตรวจสอบให้แน่ใจว่าClipViewได้clipsToBoundsตั้งค่าเป็นYESหากความกว้างน้อยกว่ามุมมองหลัก นอกจากนี้ยังClipViewต้องการการอ้างอิงถึงไฟล์UIScrollView.
ขั้นตอนสุดท้ายคือการแทนที่- (UIView *)hitTest:withEvent:ภายในไฟล์ClipView.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
โดยพื้นฐานแล้วสิ่งนี้จะขยายพื้นที่สัมผัสของUIScrollViewกรอบมุมมองของผู้ปกครองตามที่คุณต้องการ
อีกทางเลือกหนึ่งคือการคลาสย่อยUIScrollViewและแทนที่- (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) eventวิธีการของมันอย่างไรก็ตามคุณยังคงต้องใช้มุมมองคอนเทนเนอร์เพื่อทำการตัดต่อและอาจเป็นการยากที่จะกำหนดว่าเมื่อใดจะส่งคืนYESโดยอิงจากUIScrollViewเฟรมของเท่านั้น
หมายเหตุ: คุณควรดูที่hitTest: withEvent: การปรับเปลี่ยนของ Juri Pakasteหากคุณมีปัญหากับการโต้ตอบกับผู้ใช้ subview