iOS 웹뷰에서 클릭 시 발생하는 회색 플리커 현상 제거하기

2024-06-13


사진: Unsplash 의 Benjamin Ashton


iOS 웹뷰에서 onclick 이벤트를 처리할 때 클릭된 영역에 회색 플리커 현상이 나타나는 문제를 경험하신 적이 있나요? 이는 웹 콘텐츠가 기본적으로 적용하는 클릭 피드백 효과로 인해 발생합니다. 이 블로그 포스트에서는 이러한 클릭 피드백 효과를 제거하는 방법을 소개해 드리겠습니다.

1. -webkit-tap-highlight-color

가장 간단한 방법은 CSS의 -webkit-tap-highlight-color 속성을 사용하는 것입니다. 이 속성을 통해 클릭 피드백 효과를 완전히 제거할 수 있습니다. 

 

* {
    -webkit-tap-highlight-color: transparent;
}

 

이 코드를 스타일 시트에 추가하면 페이지의 모든 요소에서 탭 하이라이트 효과가 제거됩니다.


2. -webkit-touch-callout

또한, -webkit-touch-callout 속성을 사용하여 터치 콜아웃(롱 프레스 시 나타나는 메뉴)을 비활성화할 수도 있습니다.

 

* {
    -webkit-touch-callout: none;
}

3. touch-action

touch-action 속성을 사용하여 기본 터치 동작을 제어할 수 있습니다. 클릭 피드백 효과를 제거하려면 이 속성을 설정할 수 있습니다.

 

* {
    touch-action: manipulation;
}

4. Button 및 Link 요소의 스타일링

특히 버튼 및 링크 요소에 대해서도 스타일을 적용할 수 있습니다.

 

button, a {
    -webkit-tap-highlight-color: transparent;
}

5. 예제: 모든 방법을 결합

아래는 위의 모든 방법을 결합한 전체 예제입니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>iOS WebView Click Effect Removal</title>
    <style>
        * {
            -webkit-tap-highlight-color: transparent;
            -webkit-touch-callout: none;
            touch-action: manipulation;
        }
        
        button, a {
            -webkit-tap-highlight-color: transparent;
        }
    </style>
</head>
<body>
    <div>
        <button onclick="alert('Button clicked!')">Click Me</button>
        <a href="#" onclick="alert('Link clicked!')">Click Me</a>
    </div>
</body>
</html>

 

위 코드를 웹뷰에 적용하면 클릭 피드백 효과가 제거되어 클릭 시 회색 플리커 현상이 발생하지 않습니다. 프로젝트의 요구 사항에 따라 필요한 부분만 선택하여 적용하시면 됩니다.

 


메인 이미지 출처 : 사진: UnsplashBenjamin Ashton