การจดจำการแตะครั้งเดียวและสองครั้งบน UIScrollView

ฉันมี UIScrollView พร้อม UIView หลายอันที่มี UIImageView และ UILabel อยู่ในนั้น เมื่อหนึ่งในรูปภาพเหล่านี้แตะครั้งเดียว กล่องที่มีข้อความแต่ละรายการจะปรากฏขึ้น แต่ตอนนี้ฉันต้องการใช้ความเป็นไปได้ในการซูมและเลื่อนเข้าไปในรูปภาพด้วย (แสดง UIImageView พร้อมรูปภาพใน ScrollView นั่นไม่ใช่ปัญหาจริงๆ) แต่ต้องรู้ก่อนว่าภาพจะ Double-Tapped เมื่อใด

ขณะนี้ฉันใช้ UITapGestureRecognizer กับ NumberOfTapsRequires:1 เพื่อแสดงกล่องพร้อมข้อความ แต่ UITapGestureRecognizer ตัวที่สองที่มีการแตะ 2 ครั้งจะไม่ทำงาน เนื่องจาก Recognizer ตัวแรกถูกยิงก่อนและแสดงกล่องทั่วทั้งหน้าจอ

บางทีคุณอาจมีความคิดว่าจะตระหนักถึงสิ่งนี้ได้อย่างไร คงจะดีถ้าเป็น UITapGesture-Solution :)

ฉันได้ลองแบบนี้แล้ว แต่ก็ยังใช้งานไม่ได้:

UITapGestureRecognizer *gR;
gR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(ScrollView_onTap:)];
[gR setNumberOfTapsRequired:1];
[tmpPage addGestureRecognizer:gR];

gR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showFunctionMenu:)];
[gR setNumberOfTapsRequired:2];
[tmpPage addGestureRecognizer:gR];

[gR release];
gR = nil;

ตัวจดจำตัวที่สองจะถูกยิงในบางครั้งเท่านั้น แต่ส่วนใหญ่จะเป็นตัวจดจำตัวแรก มีความคิดอะไรบ้าง?


person Kevin Glier    schedule 14.04.2011    source แหล่งที่มา


คำตอบ (2)


@Kevin ฉันคิดว่าคุณต้องการกำหนด numberOfTapsRequired และไม่ใช่ numberOfTouchesRequired ทั้งคู่เป็นสิ่งที่แตกต่างกัน ตรวจสอบเอกสารในเรื่องเดียวกันเพื่อความชัดเจนยิ่งขึ้น

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITapGestureRecognizer_Class/Reference/Reference.html#//apple_ref/occ/cl/UITapGestureRecognizer

person Robin    schedule 14.04.2011
comment
โอ้ จริงๆ แล้วฉันหมายถึง numberOfTapsRequired แก้ไขแล้วในคำถามของฉัน แต่ขอบคุณสำหรับลิงค์ ฉันไม่รู้ความแตกต่างระหว่างทั้งสองจริงๆ - person Kevin Glier; 14.04.2011

วิธีแก้ไขอาจเป็นการใช้ส่วนของโค้ดต่อไปนี้ โดยที่ requireGestureRecognizerToFail จะทำเคล็ดลับให้คุณ:

UITapGestureRecognizer *singleTapGR, *doubleTapGR;
singleTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self
    action:@selector(mySingleTapHandler)];
doubleTapGR = [[UITapGestureRecognizer alloc] initWithTarget:self
    action:@selector(myDoubleTapHandler)];
doubleTapGR.numberOfTapsRequired = 2;
[singleTapGR requireGestureRecognizerToFail:doubleTapGR];
[view addGestureRecognizer:singleTapGR];
[view addGestureRecognizer:doubleTapGR];
person iOS-Coder    schedule 05.09.2012