วิธีที่ฉันแก้ไขปัญหานี้คือการปรับค่าcontentOffset
ตามcontentInset
ในUITableViewControllerDelegate
(ขยายUIScrollViewDelegate
) ดังนี้:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat sectionHeaderHeight = 40;
if (scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView.contentOffset.y>=0) {
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
} else if (scrollView.contentOffset.y>=sectionHeaderHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
ปัญหาเดียวที่นี่คือมันเด้งเล็กน้อยเมื่อเลื่อนกลับไปด้านบน
{NOTE: ส่วน "40" ควรมีความสูงที่แน่นอนของหัวข้อ 0 ของคุณ หากคุณใช้ตัวเลขที่สูงกว่าความสูงส่วนหัว 0 ของคุณคุณจะเห็นว่าการใช้นิ้วสัมผัสนั้นได้รับผลกระทบ (ลองเช่น "1,000" และคุณจะเห็นว่าพฤติกรรมการตีกลับนั้นแปลกประหลาดที่ด้านบนสุด) ถ้าตัวเลขตรงกับส่วนหัวของคุณสูง 0 ส่วนความรู้สึกนิ้วน่าจะสมบูรณ์หรือใกล้สมบูรณ์}