ฉันใช้คลาสย่อย UIGestureRecognizer
ที่กำหนดเองเพื่อติดตามท่าทางในคลาส InfoView
ของฉัน คลาส InfoView
เป็นมุมมองย่อยของคลาสย่อย UITableViewCell
แบบกำหนดเองที่เรียกว่า InfoCell
ฉันได้เพิ่มการรู้จำท่าทางของฉันในมุมมองรูทของฉัน (มุมมองพาเรนต์ของทุกสิ่งบนหน้าจอ เนื่องจากจุดประสงค์ของการรู้จำท่าทางที่กำหนดเองของฉันคือการอนุญาตให้ลาก InfoCell
มุมมองระหว่างตาราง) ตอนนี้ทุกอย่างทำงานได้ตามปกติยกเว้นสิ่งเดียว ฉันใช้รหัสต่อไปนี้ในคลาสย่อย UIGestureRecognizer
ของฉันเพื่อตรวจจับการสัมผัสในมุมมอง InfoView
:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UIView *touchView = [[touches anyObject] view];
if ([touchView isKindOfClass:[InfoView class]]) {
// Do stuff
}
ปัญหาที่นี่คือการสัมผัสบนวัตถุ InfoView
กำลังถูกดัก ดังนั้นการแตะเหล่านั้นจึงไม่ถูกส่งต่อไปยัง UITableView
ซึ่งมี InfoCell
ซึ่งเป็นมุมมองหลักของ InfoView
ซึ่งหมายความว่าฉันไม่สามารถเลื่อนมุมมองตารางโดยการลากบนมุมมอง InfoView
ได้อีกต่อไป ซึ่งเป็นปัญหาเนื่องจาก InfoView
ครอบคลุมทั้ง InfoCell
มีวิธีใดบ้างที่ฉันสามารถส่งต่อการสัมผัสไปยังมุมมองตารางเพื่อให้สามารถเลื่อนได้ ฉันได้ลองหลายอย่างแล้ว:
[super touchesBegan:touches withEvent:event];
[touchView.superview.superview touchesBegan:touches withEvent:event];
(touchView.superview.superview
ได้รับการอ้างอิงถึงพาเรนต์ UITableView
)
แต่จนถึงขณะนี้ก็ยังไม่มีอะไรทำงาน นอกจากนี้ คุณสมบัติ cancelsTouchesInView
ของ UIGestureRecognizer
ของฉันยังถูกตั้งค่าเป็น NO
เพื่อไม่ให้รบกวนการสัมผัส
ขอขอบคุณความช่วยเหลือ ขอบคุณ!