less than 1 minute read

화면이 로드되고 input 요소에 focus를 주었음에도 제대로 focus가 들어가지 않는 경우가 있다.

input 요소를 클릭해서 포커스가 한 번 들어간 경우에는 포커스를 줬을 때 정상적으로 들어가지만 화면에 클릭이나 별다른 이벤트가 없이 로드만 된 상태에서 포커스를 주게 되면 포커스가 들어가지 않는 현상이 발생한다.

그럴땐 아래 코드를 추가해서 문제를 해결할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		getWebView().requestFocus();
		getWebView().setOnTouchListener(new View.OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				switch (event.getAction()) {
					case MotionEvent.ACTION_DOWN:
					case MotionEvent.ACTION_UP:
						if (!v.hasFocus()) {
							v.requestFocus();
						}
						break;
				}
				return false;
			}
		});
  }

위 코드를 적용하고 다시 빌드한 뒤 화면이 로드되고 나서 별다른 이벤트 없이 포커스를 줘도 바로 적용이 되는 모습을 볼 수 있다.