-didSelectRowAtIndexPath: ไม่ถูกเรียก


295

ฉันกำลังเขียนแอพ iOS ด้วยมุมมองตารางภายในมุมมองแท็บ ในตัวฉันUITableViewControllerฉันนำไปใช้-tableView:didSelectRowAtIndexPath:แต่เมื่อฉันเลือกแถวที่รันไทม์วิธีการจะไม่ถูกเรียก มุมมองตารางกำลังถูกบรรจุแม้ว่าดังนั้นฉันรู้ว่าวิธีการ tableView อื่น ๆ ในตัวควบคุมของฉันจะถูกเรียก

ใครบ้างมีความคิดใด ๆ ที่ฉันอาจทำให้ผิดเพื่อให้สิ่งนี้เกิดขึ้นได้?


79
นอกจากนี้คุณอาจมี gestureRecognizer ด้านบนของ UITableView ที่ดูดซับส่วนที่เลือก .. (หนึ่งในความเป็นไปได้)
M.Othman

ระวังถ้ามุมมองตารางกำลังถูกเติมข้อมูลหมายความว่าแหล่งข้อมูลถูกตั้งค่าไว้อย่างดี การเลือกเป็นส่วนหนึ่งของวิธีการมอบสิทธิ์ ดังนั้น DataSource อาจตั้งค่าได้ดี แต่ไม่ใช่ตัวแทน!
Thomas Besnehard

1
สวัสดี M.Othman ความคิดเห็นของคุณเป็นสิ่งที่ผิดกับปัญหาของฉันเอง คุณรู้วิธีการใช้ gestureRecognizer ทำงานกับ 'the UITableViewหรือไม่?
yhl

15
-didSelectRowAtIndexPathผมสังเกตเห็นว่าถ้าผมแตะค้างไว้แตะในที่สุดสาย ฉันหาหมวกเพราะฉันมีระบบจดจำท่าทางแตะบนโต๊ะและท่าทางต้องล้มเหลวก่อนที่จะได้รับการสัมผัส แม้ว่าจะเป็นเรื่องแปลก แต่ภาพเคลื่อนไหวการเลือกตารางจะไม่ได้รับผลกระทบจากตัวจดจำท่าทาง
Hlung

6
ฉันมีปัญหาเดียวกันที่นี่และมีโอกาสโชคดีที่ได้เรียนรู้ว่าคุณไม่สามารถมี gestureRecognizer ด้านบนของ UITableView ขอบคุณ M. Othman!
vnchopra

คำตอบ:


97

ดูเหมือนว่าคลาสจะไม่ได้ใช้UITableViewDelegateสำหรับมุมมองตารางนั้น แต่UITableViewControllerควรกำหนดให้โดยอัตโนมัติ

มีโอกาสใดที่คุณจะรีเซ็ตผู้รับมอบสิทธิ์เป็นคลาสอื่นหรือไม่?


7
ฉันค้นพบว่าในขณะที่ตัวควบคุมของฉันเป็น UITableViewController ฉันใช้วิดเจ็ต UIViewController แบบเก่าใน UI Builder ไม่ได้ผล เมื่อฉันลบวิดเจ็ต UIViewController และวาง UITableViewController แทนมันทุกอย่างทำงานได้
Matt Pfefferle

1
เขตแดนอีกกรณีสำหรับทุกคน - ฉันวางสายผู้เข้าร่วมในรหัสและลืมไปก่อนหน้านี้ฉันได้วางสายผู้ร่วมประชุมผ่านสตอรี่บอร์ด .... คนสุดท้ายที่จะทำให้มันชนะ
Oliver Dungey

1
คุณสามารถแสดงวิธีการ "รีเซ็ตผู้ได้รับมอบหมายให้เป็นคลาสอื่น" ได้ไหม? ฉันมีปัญหาเดียวกันนี้และไม่สามารถแก้ไขได้
Alfro

1
myTableViewController.tableView.delegate = xxx
Hunter

534

ในกรณีที่มีคนทำผิดโง่เหมือนฉัน:

ตรวจสอบว่าชื่อวิธีการของสิ่งที่คุณคาดหวังว่าdidSelectจะได้รับโดยบังเอิญdidDeselectหรือไม่ ฉันใช้เวลาค้นหาประมาณสองชั่วโมง ...


47
ปัญหาเดียวกันที่นี่ มันเป็นเพราะ XCode ทำการเติมข้อมูลอัตโนมัติที่ Deselect ก่อนการเลือก
user1021430

ในทำนองเดียวกันฉันได้ตั้งค่า allowSelection = false ซึ่งรวมถึงการลบไฮไลต์การเลือกใด ๆ ยังป้องกันไม่ให้เซลล์ถูกกด!
djinne95

503

สิ่งอื่นที่อาจนำไปสู่ปัญหาไม่ใช่ประเภทการเลือกที่เลือก:

ชนิดการเลือก UITableView

ควรจะเป็นSingle Selectionสำหรับการเลือกปกติควรจะไม่ได้No Selectionเป็น

หากต้องการทำสิ่งนี้โดยทางโปรแกรมให้ทำ:

tableView.allowsSelection = YES

4
ฉันยังคงใช้งานต่อไปเพราะฉันมีฉากที่มักจะอยู่ในโหมดแก้ไขและฉันก็ลืมเปลี่ยนค่าเริ่มต้นจาก "ไม่มีการเลือกระหว่างแก้ไข"
Symmetric

3
คุณสามารถเพิ่มบรรทัดนี้ในวิธีการ -viewDidLoad ของ viewControlller NSParameterAssert (self.tableView.allowsSelection) ของคุณ
Nikolay Shubenkov

สำหรับผู้ที่สังเกตเห็น tableView.rx.itemSelected.subscribe ไม่ได้โทรกลับนี่เป็นปัญหาและงานแก้ไขด้านบน
Dhilip

มีประโยชน์มากเมื่อคุณเข้ายึด codebase บางส่วนและมันมีรหัสโดยใช้ปุ่มที่มีแท็ก แต่ไม่ได้เลือก SelectRow เมื่อการเลือกนี้ถูกปิดการใช้งานในกระดานเรื่องราว Nit
Nitin Alabur

ตารางนี้เป็นพฤติกรรมเริ่มต้นหรือไม่
Frostmourne

296

ความเป็นไปได้อีกอย่างหนึ่งคือ UITapGestureRecognizer สามารถกินเหตุการณ์ได้ตามที่เป็นอยู่ที่นี่: https://stackoverflow.com/a/9248827/214070

ฉันไม่ได้สงสัยสาเหตุนี้เพราะเซลล์ตารางยังคงเน้นสีฟ้าราวกับว่าก๊อกกำลังทะลุผ่าน


นี่เป็นปัญหาของฉัน! ขอบคุณมาก!! ฉันหมายถึงมันทำงานได้ชัดเจนก่อนหน้านี้ แต่หยุดทำงานหลังจากฉันใช้ UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget: การกระทำด้วยตนเอง: @selector (dismissKeyboard)]; [self.view addGestureRecognizer: tap];
coolcool1994

26
ฉันมีปัญหาเช่นเดียวกับคุณ @ coolcool1994 เพิ่งใช้งาน [แตะ setCancelsTouchesInView: NO]; และแก้ไขปัญหา
nizx

ขอบคุณมันช่วยฉันได้ ในกรณีของฉันdidSelectRowAtIndexPathไม่ทำงานหลังจากลบเซลล์ในcommitEditingStyleเท่านั้น แล้วฉันจะทำUITapGestureRecognizerและtapAction:ได้indexPathจากsender.view( [self.tableView indexPathForCell:sender.view]) และโทร[self.tableView.delegate didSelectRowAtIndexPath:myIndexPath]
Alexmelyon

1
นี่คือปัญหาของฉันเช่นกัน .. เพิ่มรหัสเพื่อลบ tapgesture ใน tableview และมันทำงานเหมือน charm - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {UITapGestureRecognizer * ท่าทาง ] ในนั้น]; gesture.cancelsTouchesInView = NO; [self.tableView addGestureRecognizer: ท่าทาง]; }
Udaya Sri

6
ขอบคุณ @nizx ในสวิฟท์ 4 tap.cancelsTouchesInView = false
Ariven Nadar

150

ทุกคำตอบที่ดี แต่มีอีกหนึ่งที่ต้องระวัง ...

(โดยเฉพาะอย่างยิ่งเมื่อสร้าง UITableView โดยทางโปรแกรม)

ตรวจสอบให้แน่ใจ tableView สามารถตอบสนองต่อการเลือกโดยการตั้งค่า[tableView setAllowsSelection:YES];หรือถอดสายใด ๆ NOที่ชุดมัน


9
ฉันจะเพิ่มsetAllowsSelectionDuringEditing:ในรายการ (เมื่อ tableview อยู่ในโหมดแก้ไข)
alex-i

ขอบคุณ! ใน IB ฉันมีการเปลี่ยนแปลงในการ "เลือก" Single Selectionค่าส่วนเพื่อ
Sasho

90

หากปัญหาเกิดขึ้นกับUITapGestureRecognizerคุณสามารถแก้ไขปัญหานี้ได้:

  • ใน Storyboard:

ป้อนคำอธิบายรูปภาพที่นี่

ในรหัสด้วยObjective-C:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)]; 
[self.view addGestureRecognizer:tap];

[tap setCancelsTouchesInView:NO];

ในรหัสด้วยSwift:

let tap = UITapGestureRecognizer(target: self, action:Selector("dismissKeyboard"))
view.addGestureRecognizer(tap)

tap.cancelsTouchesInView = false

67

ฉันได้พบสองสิ่งในสถานการณ์นี้

  1. คุณอาจลืมที่จะใช้โพรโทคอล UITableViewDelegate หรือไม่มีตัวแทนการมอบหมายระหว่างคลาสของคุณและมุมมองตารางของคุณ

  2. คุณอาจมี UIView อยู่ในแถวของคุณซึ่งเป็นการตอบกลับครั้งแรกและนำการคลิกของคุณออกไป พูด UIButton หรือสิ่งที่คล้ายกัน


5
มันเริ่มเกิดขึ้นบน iOS 7 ปิดการใช้งาน "ผู้ใช้เปิดใช้งานการโต้ตอบ" ของเนื้อหาภายใน contentView แก้ไขสิ่งนี้
Kof

1
@ เขาถูกจับ การสร้าง UITableViewCell ในเครื่องมือสร้างส่วนต่อประสานของ Xcode 5 สร้างขึ้นด้วยการเปิดใช้งานการโต้ตอบกับผู้ใช้ = YES Bad Xcode 5!
jsd

44

ฉันมีปัญหาเดียวกัน และมันก็หายาก แต่บางแห่งในรหัสของฉันคือ:

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    return nil;
}

มันจะต้องเป็นreturn indexPathอย่างอื่น-tableView:didSelectRowAtIndexPath:ไม่ได้ถูกเรียก


2
for ได้ SelectRow At IndexPath ลายเซ็นที่ถูกต้องคือ: - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
coolcool1994

สำหรับฉันมันจะไม่เริ่มเรียก tableView: didSelectRowAtIndexPath จนกว่าฉันจะลบ willSelectRowAtIndexPath ทั้งหมด
etayluz

38

หากคุณเพิ่ม gestureRecognizer ที่ด้านบนของ UITableView didSelectRowAtIndexPathจะไม่ถูกเรียก

ดังนั้นคุณต้องใช้วิธีมอบหมาย gestureRecognizer เพื่อหลีกเลี่ยงการสัมผัสในมุมมองเฉพาะ

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ([touch.view isDescendantOfView:YourTable]) {
        return NO;
    }
    return YES;
}

3
if ([touch.view isDescendantOfView:YourTable])
Sudheesh

29

ฉันพบปัญหาหลังจากเดือนที่ฉันไม่ได้ดูรหัสของฉันฉันลืมว่าฉันใช้วิธีการต่อไปนี้เนื่องจากข้อกำหนดบางอย่างซึ่งไม่จำเป็น

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath  *)indexPath{
    return NO;
}

มันควรจะคืนค่า YES สำหรับหนึ่งแถวเพื่อเลือก


24

คุณต้องเลือกตัวเลือกเหล่านี้

ป้อนคำอธิบายรูปภาพที่นี่

แต่หากคุณไม่ต้องการUITableViewเน้นที่การคลิกคุณควรทำการเปลี่ยนแปลงUITableViewCellคุณสมบัติ

เลือกตัวเลือกไม่มีสำหรับการเลือกเช่นเดียวกับด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่


20

ฉันใส่UITapGestureRecognizerมุมมองตารางของฉันเพื่อยกเลิกแป้นพิมพ์ที่ป้องกันไม่ให้didSelectRowAtIndexPath:ถูกเรียก หวังว่าจะช่วยใครซักคน


19

ในกรณีที่คุณมีปัญหาเช่นเดียวกับฉัน: เห็นได้ชัดว่าวิธีนี้จะไม่ถูกเรียกถ้า tableView ของคุณอยู่ในโหมดแก้ไข คุณต้องตั้งค่า allowSelectionDuringEditing เป็นจริง

ผ่านคำถามนี้: เมื่อมีการแก้ไข `UITableView` ไม่ได้เรียก didSelectRowAtIndexPath?


19

ผมมีปัญหาเหมือนกัน,

UITapGestureRecognizerเหตุผลที่ถูกใช้ ฉันต้องการให้คีย์บอร์ดยกเลิกเมื่อแตะที่อื่น ฉันรู้ว่าสิ่งนี้แทนที่การกระทำของการแตะทั้งหมดนั่นคือสาเหตุที่didSelectRowAtIndexPathฟังก์ชั่นไม่ได้ถูกเรียก

เมื่อฉันแสดงความคิดเห็นแถวที่เกี่ยวข้องกับUITapGestureRecognizerมันทำงาน นอกจากนี้คุณสามารถตรวจสอบในฟังก์ชั่นของUITapGestureRecognizer selectorการแตะUITableViewCellหรือไม่


14

ในกรณีของฉัน didSelctRowAtIndexPath ไม่เรียกใช้เนื่องจากฉันไม่ได้เลือกไม่มีเลยในคุณสมบัติการเลือกของ tableView ตั้งค่าเป็นตัวเลือกเดียวแก้ไขปัญหาของฉัน

ป้อนคำอธิบายรูปภาพที่นี่


11

สำหรับ Xcode 6.4, Swift 1.2 แท็ก "การเลือก" ถูกเปลี่ยนแปลงใน IB ฉันไม่รู้ว่าอย่างไรและทำไม การตั้งค่าเป็น "การเลือกแบบเดี่ยว" ทำให้เซลล์มุมมองตารางของฉันสามารถเลือกได้อีกครั้ง ป้อนคำอธิบายรูปภาพที่นี่


10

แม้ว่าคำตอบอื่นจะได้รับการยอมรับฉันจะเพิ่มปัญหาที่เป็นไปได้และวิธีแก้ปัญหาสำหรับผู้ที่สังเกตเห็นปัญหานี้

หากคุณเปิดการนับการอ้างอิงอัตโนมัติ (ARC) คุณอาจพบว่าแม้หลังจากกำหนดตัวควบคุมของคุณเป็นผู้รับมอบสิทธิ์ของมุมมองข้อความของมุมมองไปยังตัวควบคุมจะไม่ได้รับเนื่องจาก ARC กำลังลบตัวควบคุม เห็นได้ชัดว่าตัวชี้ผู้รับมอบสิทธิ์ของ UITableView ไม่นับเป็นการอ้างอิงสำหรับ ARC ดังนั้นหากเป็นเพียงการอ้างอิงเท่านั้นตัวควบคุมจะถูกยกเลิกการจัดสรร คุณสามารถตรวจสอบว่าสิ่งนี้เกิดขึ้นหรือไม่โดยใช้วิธีการ dealloc บนคอนโทรลเลอร์และตั้งค่าเบรกพอยต์หรือการโทร NSLog ที่นั่น

วิธีแก้ไขคือติดตามตัวควบคุมด้วยการอ้างอิงที่ดีที่อื่นจนกว่าคุณจะแน่ใจว่าคุณไม่ต้องการมันอีกต่อไป


คอนโทรลเลอร์กำลังถูกรวบรวมขยะในขณะที่มุมมองยังคงแสดงอยู่? สิ่งนี้เกิดขึ้นได้จริงหรือ
Drux

@Drux ใช่แล้ว! เมื่อสิ่งนี้เกิดขึ้นกับฉันมันเกือบจะเป็นรุ่นแรกของ Obj-C ที่มีการรวบรวมขยะที่ใช้บน iOS และโดยสุจริตพวกเขาไม่ได้ทำงานที่ยอดเยี่ยม มีการอ้างอิงจำนวนมากอย่างชัดเจนหรือโดยนัยว่า "อ่อนแอ" ที่ IMO ควรมีความแข็งแกร่ง ซึ่งนำไปสู่ความแปลกประหลาดเช่นการเก็บขยะของวัตถุในการใช้งานโดยชั้นแสดงผล ฉันยังไม่ได้ใช้งาน iOS มาระยะหนึ่งแล้วฉันก็เลยไม่รู้ว่ามันยังคงเป็นเวอร์ชั่นล่าสุดอยู่หรือเปล่า
Andrew Gorcester

รหัสของฉันมีปัญหาเกี่ยวกับขนาดหน่วยความจำเพิ่มขึ้นและฉันได้แก้ไขบางส่วนแล้วและที่อื่นในรหัสหลังจากนี้ไม่ได้เลือกไม่ได้รับการเรียกครั้งแรกเท่านั้น ฉันไม่ทราบว่าสิ่งนี้เป็นการแก้ปัญหาหรือไม่
เหลืองอำพัน K

10

อย่าลืมตั้งค่าแหล่งข้อมูลและผู้รับมอบสิทธิ์ในวิธี viewDidLoad ดังนี้:

[self.tableView setDelegate:self];

[self.tableView setDataSource:self];

ฉันกำลังเรียกแหล่งข้อมูล แต่ไม่ได้มอบสิทธิ์ ... ขอบคุณ!
Gmeister4

9

ปัญหาของฉันไม่ได้กล่าวถึงข้างต้น และง่อยเลย แต่ฉันคิดว่าฉันจะเขียนไว้ที่นี่ในกรณีที่มันช่วยใครบางคน

ฉันมีtableViewControllerตัวควบคุม "ฐาน" ของฉันแล้วฉันจะสร้างคลาสย่อยของตัวควบคุมนี้ ฉันกำลังเขียนรหัสทั้งหมดของฉันในtableView:didSelectRowAtIndexPathรูทีนในคลาส "ฐาน" ลืมไปโดยสิ้นเชิงว่าโดยค่าเริ่มต้นรูทีนนี้ก็ถูกสร้างขึ้น (แม้ว่าจะไม่มีรหัสที่ไม่ได้ทำอะไรเลย) ในคลาสย่อยทั้งหมดของฉันเช่นกัน ดังนั้นเมื่อฉันรันแอพของฉันมันรันโค้ดเวอร์ชันคลาสย่อยไม่ได้ทำอะไรเลยและทำให้ฉันเศร้า แน่นอนเมื่อฉันลบรูทีนออกจากคลาสย่อยมันใช้รูทีนคลาส "ฐาน" mt และฉันอยู่ในธุรกิจ

ฉันรู้ว่า. อย่าหัวเราะ แต่นี่อาจจะช่วยคนที่ฉันสูญเสียไป ...


8

ให้ 2 เซ็นต์ของฉันกับสิ่งนี้

ฉันมี Custom UITableViewCell และมีปุ่มที่ครอบคลุมทั้งเซลล์ดังนั้นเมื่อเกิดการสัมผัสปุ่มจะถูกเลือกไม่ใช่เซลล์

ไม่ว่าจะลบปุ่มหรือในกรณีของฉันฉันตั้งค่าผู้ใช้ Interation Enable เป็น false บนปุ่มวิธีที่เซลล์ถูกเลือก


8

หากคุณอ่านสิ่งนี้ยังไม่สามารถแก้ปัญหาได้

ฉันมีเซลล์ที่กำหนดเองโดยที่ช่องทำเครื่องหมาย " User Interaction Enabled " ถูกปิดใช้งาน ดังนั้นฉันแค่เปิดสวิตช์ โชคดี.


7

ฉันเพิ่งมีนี้และตามที่ได้เกิดขึ้นกับผมในอดีตที่ผ่านมามันไม่ได้ทำงานเพราะผมไม่ได้ใส่ใจกับการเติมข้อความอัตโนมัติเมื่อพยายามที่จะเพิ่มวิธีการและที่จริงผมจบลงด้วยการดำเนินการtableView:didDeselectRowAtIndexPath: tableView:didSelectRowAtIndexPath:แทน


7

ตรวจสอบให้แน่ใจว่าคุณดำเนินการtableView:didSelectRowAtIndexPathและไม่tableView:didDeSelectRowAtIndexPath

นี่ทำให้ฉันได้มากกว่าสองสามครั้ง !!


5

ฉันรู้ว่าเก่าและปัญหาได้รับการแก้ไข แต่มีปัญหาที่คล้ายกันฉันคิดว่าปัญหานั้นเกิดจากการใช้ UITableViewCell ที่กำหนดเองของฉัน แต่วิธีแก้ไขนั้นแตกต่างอย่างสิ้นเชิง - ฉันรีสตาร์ท XCode :) แล้วก็ทำงานได้ดี! เกือบจะเหมือน Windows :)


5

หากมุมมองตารางของคุณอยู่ในโหมดแก้ไข (เช่น[tableView setEditing:YES animated:NO];) คุณจะต้องตั้งค่าtableView.allowsSelectionDuringEditing = YES;


4

ความผิดพลาดอีกอย่างที่คุณสามารถทำได้ (เหมือนที่ฉันเคยทำ): ถ้าคุณตั้งเซกเมนต์ไว้ที่เซลล์didSelectRowAtIndexPathจะไม่ถูกเรียก คุณควรตั้งค่าส่วนย่อยของคุณที่ตัวควบคุมมุมมองแทน


4

คำตอบเหล่านี้ไม่เหมาะกับฉัน หลังจากผ่านไปประมาณหนึ่งชั่วโมงฉันก็ค้นพบบางสิ่งที่ร้ายกาจมาก:

ฉันมีมุมมองตารางภายในเซลล์ของมุมมองตารางอื่น ฉันตัดสินใจที่จะสร้างมุมมองที่ล้อมรอบซึ่งมีมุมมองตารางด้านในท่ามกลางสิ่งอื่น ๆ ฉันเรียกมุมมองนี้ว่า contentView และเชื่อมโยงมันเข้ากับ xib

ปรากฎว่า UITableViewCell มี contentView อยู่แล้วและทำสิ่งแปลก ๆ ด้วย ปัญหาแก้ไขได้ด้วยตัวเองเมื่อฉันเปลี่ยนชื่อคุณสมบัติเป็น mainContentView และเชื่อมต่อมุมมองกับคุณสมบัติที่ถูกเปลี่ยนชื่อนี้ใหม่


4

ในกรณีของฉันฉันแบบไดนามิกคำนวณความสูงของTableView's SuperViewที่เวลาในการโหลด เนื่องจากการวินิจฉัยผิดให้อยู่ในตำแหน่งที่ด้านนอกของTableView SuperViewการTableViewดึงนั้นดี แต่การโต้ตอบทั้งหมดถูกปิดใช้งาน (และdidSelectRowAtIndexPathไม่เคยถูกเรียก) ตรวจจับได้ยากมากเนื่องจากไม่มีสิ่งบ่งชี้ทางภาพว่าTableView"ไม่สามารถเข้าถึงได้"


4

ในกรณีของฉันปัญหาคือฉันมีUITableViewCellคลาสย่อยและฉันใช้วิธีการทั้งสองนี้: touchesBegan:withEvent:& touchesEnded:withEventเพื่อจัดการกับอนิเมชั่นแฟนซีเมื่อสัมผัส แต่ฉันลืมที่จะเพิ่ม[super touchesBegan:touches withEvent:event];โฆษณาวิธี[super touchesEnded:touches withEvent:event];เพื่อแจ้งผู้ปกครองของเซลล์ของการสัมผัสด้วย

ดังนั้นการเปลี่ยนรหัสเพื่อติดตามแก้ไขปัญหาของฉัน:

-(void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
    [super touchesBegan:touches withEvent:event];
    //blah blah blah
}

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    [super touchesEnded:touches withEvent:event];
    //rest of the code
}

1
สามารถยืนยันได้ว่าสิ่งนี้ทำให้เกิดปัญหาของ OP สำหรับฉันโดยเฉพาะ
Josh Wolff

4

ในกรณีของฉันวิธีแก้ไขคือเปลี่ยน NO เป็น YES ในฟังก์ชันด้านล่าง

iOS 9+

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath
{
    return YES;
}

นี่คือปัญหาของฉันด้วย ฉันมีการใช้งานหลาย tableView และลืมแยก tableViews สองรายการในวิธีนี้
turingtested
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.