아이폰 키보드가 뜨는 데 한 박자 걸리는 이유
서드파티 키보드는 화면에서 내려가는 순간 완전히 종료됩니다. 그래서 한참 뒤에 다시 여는 것은 앱을 새로 켜는 쪽에 가깝습니다. 그 한 박자가 왜 생기고 무엇이 길게 만드는지 설명합니다.
지구본 키를 누르거나, 한참 만에 아이폰을 다시 들었을 때 키는 이미 그려져 있는데 누른 것이 잘 안 먹는 순간이 있습니다. 첫 탭이 무시되거나 키보드가 온전히 그려지기까지 한 박자가 뜹니다. 그러고 나면 자리를 잡고, 그 뒤로는 끝까지 아무렇지 않게 잘 쳐집니다. 처음에만 머뭇거리고 그다음부터는 멀쩡하다는 이 패턴이 결정적인 단서입니다. 키보드가 느린 것이 아니라 키보드가 켜지고 있는 중입니다.
왜 한 박자가 생기는가
키보드 확장은 자기 키보드가 화면에 떠 있는 동안에만 프로세스로 존재합니다. 키보드를 내리거나, 다른 키보드로 바꾸거나, 입력란을 벗어나는 순간 iOS는 그 확장을 완전히 종료합니다. 백그라운드에 남아 돌거나, 멈춘 채 대기하거나, 기다리고 있는 부분이 없습니다. 이 규칙 덕분에 주머니 안에서 조명 애니메이션이 배터리를 갉아먹는 일도 생기지 않으니, 불편하라고 있는 규칙은 아닙니다. 키보드 확장에는 일반 앱보다 훨씬 빠듯한 메모리 예산이 걸려 있고, 그 예산을 확실하게 지키는 가장 단순한 방법이 필요 없어지는 즉시 남겨 두지 않는 것이기 때문입니다.
그 결과, 한동안 안 쓰던 서드파티 키보드로 넘어가는 일은 이미 떠 있는 앱 두 개 사이를 오가는 것과 다릅니다. 앱을 새로 켜는 쪽에 훨씬 가깝습니다. iOS가 확장의 코드를 메모리에 다시 올려야 첫 키 입력을 처리할 수 있고, 그 올리는 단계가 우리가 느끼는 그 한 박자입니다.
첫 순간이 지나면 왜 사라지는가
확장이 다 올라오고 나면 키보드가 화면에 떠 있는 동안에는 계속 돌아가기 때문에, 두 번째 이후의 입력은 곧바로 처리됩니다. 글자마다 붙는 비용이 있는 것이 아니라 한 번의 시작 비용만 있는 셈입니다. 같은 키보드로 이십 분 동안 아무 지연 없이 치다가, 아이폰을 한 시간 주머니에 넣어 두고 메시지를 다시 열었을 때 또 한 박자가 생기는 이유도 이것입니다. 그 한 시간 사이에 확장이 종료되었고, 느려진 것이 아니라 처음부터 다시 시작하는 중입니다.
그 한 박자를 길게 만드는 것들
- 사진 배경이나 큰 테마 이미지. 키보드가 자기 화면을 그리기 전에 먼저 디코딩해야 하므로 시작 단계에 그대로 얹힙니다.
- 기기 전체의 메모리 압박. 앱을 많이 띄워 두었거나 메모리가 적은 예전 기기라면, 마지막으로 쓴 뒤에 iOS가 확장을 이미 버렸을 확률이 높아져서 콜드 스타트를 더 자주 만납니다.
- 키보드 앱을 막 설치하거나 업데이트한 직후. 아직 아무것도 캐시되지 않은 상태라 첫 실행이 가장 오래 걸리는 편입니다.
- 지구본 키로 키보드를 바꾸는 순간. 떠나는 키보드는 내려가고 들어오는 키보드는 새로 올라와야 하므로, 도착한 쪽에 같은 비용이 그대로 붙습니다.
원인이 아닌 것들
이것만으로 잘못 만든 키보드라고 보기는 어렵습니다. iOS의 모든 서드파티 키보드는 똑같은 방식으로 종료되고, 빠르게 느껴지는 키보드도 예외가 아닙니다. 규칙이 개별 개발자의 코드가 아니라 iOS 쪽에 있기 때문입니다. 인터넷 연결과도 관계가 없습니다. 입력과 자동 수정, 화면 효과는 전부 기기 안에서 처리되고 네트워크 요청이 필요하지 않습니다. 전체 접근 권한과도 무관합니다. 그 스위치가 관장하는 것은 클립보드와 네트워크 접근이지, 확장이 메모리에 얼마나 빨리 올라오는지가 아닙니다.
실제로 도움이 되는 것
- 추가해 둔 키보드를 실제로 쓰는 것들로만 줄여 두세요. 시작 지연 자체를 없애지는 못하지만, 지구본 키를 눌렀을 때 아직 안 올라온 키보드에 도착하는 횟수가 줄어듭니다.
- 사진 배경을 지원하는 키보드라면 작고 단순한 이미지가 더 빨리 뜹니다. 키보드가 그려지기 전에 디코딩할 양이 줄기 때문입니다.
- 기기 전체가 굼뜨다면, 즉 앱을 잔뜩 띄워 두었거나 저장 공간이 빠듯하다면 몇 개를 정리해 보세요. iOS가 확장을 더 일찍 버리게 만드는 메모리 압박이 줄어듭니다.
- 입력을 시작할 때 잠깐 생기는 한 박자는 없애려 애쓰기보다 있는 것으로 두는 편이 낫습니다. 어딘가 숨어 있는 설정이 아니라 iOS에서 확장이 동작하는 방식 자체에서 나오는 구조적인 부분입니다.
자주 묻는 질문
키보드가 느리게 뜨면 잘못 만든 키보드라는 뜻인가요?
그것만으로는 아닙니다. iOS의 모든 서드파티 키보드는 화면에서 내려가는 순간 완전히 종료되므로, 한동안 쓰지 않다가 다시 열면 어느 키보드든 같은 지연이 생길 수 있습니다. 지연이 유난히 길거나 첫 입력이 아니라 매 입력마다 생긴다면 그때는 문제 삼을 만합니다.
한참 아이폰을 안 만졌을 때 더 오래 걸리는 이유는 뭔가요?
간격이 길수록 iOS가 다른 앱을 위해 키보드 확장을 이미 종료해 두었을 확률이 높아집니다. 그래서 다음번에 여는 것은 돌고 있던 것으로 되돌아가는 것이 아니라 처음부터 새로 시작하는 일이 됩니다.
전체 접근 권한을 켜면 더 빨리 뜨나요?
아니요. 전체 접근 권한이 관장하는 것은 네트워크 접근과 시스템 클립보드입니다. iOS가 키보드 확장을 메모리에 올리는 속도와는 관계가 없어서, 켜도 이 부분은 달라지지 않습니다.
내 키보드에서 직접 써보기
Kibo는 진짜 기계식 키음과 다양한 테마, RGB 백라이트 효과를 갖춘 iPhone용 무료 키보드입니다. 계정도 광고도 없고, 전체 접근 권한을 꺼둔 상태에서도 작동합니다.