728x90
안드로이드 커스텀뷰 개발을 하다보면 한번쯤
아래와 같은 경고 메시지를 볼 수 있다.
Custom view [Classname] overrides onTouchEvent but not performClick |
직역을 해보면, 커스텀뷰 Classname 은 onTouchEvent를 오버라이드 했지만, performClick은 오버라이드하지 않았다.
정도로 해석해볼 수 있다.
이 말이 무엇인지 찾아보니,
커스텀뷰를 만들어 낼때 접근성(Accessibility)를 고려해야 하는데, performClick은 이런 접근성을 고려할 수 있도록 도와준다고 한다.
Stack overflow를 찾아보면 다음과 같은 설명이 있다.
View가 click이 감지 될 때 performClick을 구현하지 않고 호출하게 되면 View가 내게 필요한 옵션 조치를 처리하지 못할 수 있다. Click이 발생하면 일부 접근성 서비스에서 performClick을 호출하므로 Click 동작을 처리하는 로직을 적용해놔야 한다. |
따라서 구글이 강조하는 접근성(Accessibility)을 고려하는 앱을 만든다면, performClick 을 오버라이드를 하도록 하자.
// 모 대충 이런식으로?
override fun onTouchEvent(ev: MotionEvent): Boolean {
performClick()
return super.onTouchEvent(if (mSwipeOrientation == VERTICAL) swapXY(ev) else ev)
}
override fun performClick(): Boolean {
return super.performClick()
}
대충 이런식으로 구성하면 경고 메시지가 사라진다.
728x90
'IT > Android' 카테고리의 다른 글
안드로이드 터치 이벤트 처리 과정(Android touch event) (0) | 2020.05.10 |
---|---|
[Android] View에서 onTouchEvent 이벤트 ACTION_DOWN 만 나오는 문제 (0) | 2020.05.04 |
[Google] Cloud Vision API 가격 정보 (0) | 2019.11.18 |
[Kotlin] 메서드 인터페이스 객체 생성하기(Method Interface object) (0) | 2019.09.02 |
[Android] FragmentPagerAdapter와 FragmentStatePagerAdapter 차이 (1) | 2019.08.27 |