MAUI에서 TouchBehavior를 이용한 긴 누름 처리 오류

위의 페이지를 참고해서 TouchBehavior를 이용해 코드를 작성하고 있습니다

StackLayout을 클릭하면 복사(OnCopyButtonClicked) 기능이 동작하도록 구성했습니다
제가 작성한 코드는 아래와 같습니다

<StackLayout Spacing="10" Padding="10">
    <StackLayout.Behaviors>
        <toolkit:TouchBehavior DefaultAnimationDuration="500" DefaultBackgroundColor="Transparent" 
                               PressedBackgroundColor="DarkGray" TouchGestureCompleted="OnCopyButtonClicked" />
    </StackLayout.Behaviors>
    <Label Text="안녕하세요" FontAttributes="Italic"/>
</StackLayout>

StackLayout을 누르면 복사 기능이 정상적으로 작동합니다.

그런데 이 기능을 길게 눌러 실행하도록 코드를 수정하는 경우 코드가 동작하지 않습니다.
긴 누름을 활용하도록 수정한 코드는 아래와 같습니다

<StackLayout Spacing="10" Padding="10">
    <StackLayout.Behaviors>
        <toolkit:TouchBehavior DefaultAnimationDuration="500" DefaultBackgroundColor="Transparent" 
                               PressedBackgroundColor="DarkGray" LongPressDuration="500" LongPressCompleted="OnCopyButtonClicked" />
    </StackLayout.Behaviors>
    <Label Text="안녕하세요" FontAttributes="Italic"/>
</StackLayout>

코드를 어떻게 수정해야 동작하는지 모르겠습니다
LongPressCommand 사용해서 커맨드를 넣어봐도 기능이 동작하지 않네요…
저와 같은 증상 겪어보신분 계신가요?

1 Like

혹시…음
Label를 제거해보셔도 동작이 안되나요?

Label을 제거해도 동일합니다

아래와 같이 단순클릭, 길게클릭 두가지를 나눠서 기능을 구현하려고 했는데, 추가 기능이 구현이 안되네요…

<StackLayout Spacing="10" Padding="10">
    <StackLayout.Behaviors>
        <toolkit:TouchBehavior DefaultAnimationDuration="500" DefaultBackgroundColor="Transparent" 
                               PressedBackgroundColor="DarkGray" TouchGestureCompleted="OnCopyButtonClicked"
                               LongPressDuration="500" LongPressCompleted="OnDelButtonClicked" />
    </StackLayout.Behaviors>
    <Label Text="안녕하세요" FontAttributes="Italic"/>
</StackLayout>

이거한번 참고해보시겠습니까?

아쉽게도 잘 해결되지 않아서 다른 방법을 사용할 수 있도록 했습니다…
TouchGestureCompleted 동작이 잘 작동하기에, 이 기능에 팝업을 호출하는 코드를 넣고, 팝업창에서 기능을 선택하도록 구현할예정입니다
도움을 주셔서 감사합니다!

2 Likes