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