반응형
Swift시뮬레이터에서 진행하면서 평소에는 그냥 키보드에서 진행하다 최근 가상키보드를 올려 테스트를 진행해 보고있다.
그래서 유효성검사를 진행하여 비어있으면 UITextField에 포커스를 주는
createWordsView.wordsBookNameTextField.becomeFirstResponder()
이 해당 함수를 사용하여 포커스를 잡아야하는데
포커스가 되지 않고 키보드가 나오지 않는 상황이 연출되었다.
정확하게는 키보드가 나오다 다시 들어가는 상황이였다.
그러다 코드를 보다 문뜩 키보드를 내리기 위해서 설정해 놓았던 코드들이 문제가 되나? 라는 생각이 되었다.
private func setupTapGesture() {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tapGesture.cancelsTouchesInView = false
addGestureRecognizer(tapGesture)
}
@objc func dismissKeyboard() {
endEditing(true)
}
setupTapGesture함수를 viewDidLoad에 선언이 되어있고
공백부분을 클릭하면 tapGesture가 감시하는 형식이다.
문제가 되는 부분은 cancelsTouchesInView 옵션이다.
저 부분의 default는 true인데
true : 제스쳐 인식기가 터치를 인식하면 다른 뷰의 터치 이벤트를 취소한다.
false: 제스처 인식기가 터치를 인식하더라도 다른 뷰의 터치 이벤트를 취소하지 않고 계속 전달한다.
이런식으로 나누어 진다.
이전에 진행할때 터치가안되어 찾아보았던 옵션이였는데
이번에는 button이기 때문에 상관이 없는것 같다.
저 부분을 없애면
버튼 이벤트와 tapGesture가 정상적으로 작동하고 textField의 포커스도 정상적으로 진행된다.
반응형
'Ios > Error노트' 카테고리의 다른 글
[Error] 키보드와 CollectionView의 충돌 (0) | 2024.08.06 |
---|---|
[Error] UISearchBar 네 이놈... (0) | 2024.08.02 |
[Error] Alert이후 처리 (0) | 2024.07.16 |
[Error] CoreData 사용시 attribute에서 Type을 URL로 사용하면서 나왔던 에러 (0) | 2024.07.15 |
[Error] cornerRadius가 먹히지 않았던 오류 (0) | 2024.07.12 |