ScrollBox의 자손 중 Button을 클릭한 상태로 스크롤 할 수 없는 상황

김지윤·2025년 1월 27일
0

UE5

목록 보기
9/16

위는 UserWidget의 속성 중 일부인 상호작용 탭이다.
여기서 포커스 가능 여부는 사실 '입력 받기 가능?'의 의미이다.
false면 클릭이나 키보드 입력을 받을 수 없다.
Image, TextBlock 등은 기본적으로 false이며, Button이나 EditableText는 true로 되어있다.
우리가 살펴볼 건 상호작용의 고급 탭에 있는 메서드다.
기본적으론 모두 Down and Up으로 설정되어있다.

눌러보면 총 4개의 설정이 있다.

  • Down and Up
  1. 기본 설정
  2. 마우스 버튼을 누르고 뗄 때 클릭이 인식됨.
  3. 마우스를 누른 상태에서 드래그 후 해제하면 클릭으로 인식되지 않음.
    4. 누를 때 이미 마우스 입력에 대한 처리를 끝내버려서 버튼 아래 위젯들은 클릭 인식 못 함.
  • Mouse Down
  1. 마우스 버튼을 누르는 순간 클릭이 인식됨
  2. 빠른 인식이 필요한 경우 사용 가능
  • Mouse Up
  1. 마우스 버튼을 놓을 때 클릭이 인식됨.
  2. 누른 후 다른 곳으로 드래그해도 버튼 안에서 떼면 클릭 처리됨.
  • Precise Click
  1. 클릭이 버튼의 누를 때와 뗄 때 모두 같은 위치에서 발생해야만 인식됨.
  2. 정확한 클릭이 요구되는 상황에 사용 가능.
    3. 눌렀을 때 버튼이 입력을 처리하지 않아야 하는 경우도 있으므로 아래 위젯들도 클릭 자체는 인식함.

즉, ScrollBox의 자손인 Button을 클릭한 채로 드래그하면 스크롤이 안 되는 이유는, Button이 마우스 클릭 이벤트를 처리해버려서 아래 위젯에 전달하지 않기 때문이다.
눌렀을 때 이미 Handled를 반환해버린다는 의미다.
하지만 Precise Click으로 설정해둔다면 이런 상황을 피할 수 있다.

그 아래 터치 메서드는 Down and Up, Down, Precise Tap이 있는데, 클릭 메서드와 다를 건 없다.
마지막으로 프레스 메서드는 버튼의 Click이 아닌 Press와 Release의 호출을 담당하는 설정이라고 한다.

하지만 Down and Up, Button Press, Button Release 중 무엇으로 설정해도 버튼의 Press 이벤트와 Release 이벤트의 발생 지점이나 발생 유무가 변하지 않는다.
이에 대해 좀 더 학습하고 나중에 글을 수정하겠다.

profile
공부한 거 시간 날 때 작성하는 곳

0개의 댓글