Skip to content

Commit 4eaa62a

Browse files
eunjin11claude
andauthored
fix: FloatingButton에서 consume-slide-event 제거하여 iOS list 스크롤 jank 해소 (#44)
iOS는 consume-slide-event prop이 set되면 UIPanGestureRecognizer를 LynxView root view에 attach해서, gesture arena에서 list scroll recognizer가 매 gesture 시작마다 Lynx pan의 fail을 기다리게 됨. FloatingButton 드래그는 useLongPressDrag의 long-press 임계로 list scroll과 자연스럽게 구분되므로 이 속성 없이도 동작 가능. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d3a124a commit 4eaa62a

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"lynx-console": patch
3+
---
4+
5+
`FloatingButton`에서 `consume-slide-event={[[-180, 180]]}` 속성 제거.
6+
7+
이 속성이 한 군데라도 set되면 iOS는 `UIPanGestureRecognizer`를 LynxView의 root view에 attach해요. 이 root-level recognizer가 UIKit gesture arena에서 list의 `UIScrollView` scroll recognizer와 협상하면서 `shouldBeRequiredToFailByGestureRecognizer: YES` 때문에 list scroll이 매 gesture 시작마다 Lynx pan recognizer의 fail을 기다리게 돼요. 결과적으로 `<list>` 페이지에서 스크롤 시작이 끈적한 느낌을 줘요. (Android는 MotionEvent 인터셉트 방식이라 동일 문제 없음.)
8+
9+
FloatingButton의 드래그는 `useLongPressDrag`의 long-press 임계로 list scroll과 자연스럽게 구분되므로 이 속성 없이도 동작에 큰 영향 없을 것으로 예상.

‎package/src/components/FloatingButton.tsx‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ export const FloatingButton = ({
5656
return (
5757
<view
5858
className={"fb-wrapper"}
59-
consume-slide-event={[[-180, 180]]}
6059
style={{
6160
...positionStyle,
6261
transform: isDragging ? "scale(1.05)" : "scale(1)",

0 commit comments

Comments
 (0)