swiftui 키보드 오류 질문

swiftui 키보드 오류 질문

작성일 2023.03.20댓글 1건
    게시물 수정 , 삭제는 로그인 필요

영상에서처럼 키보드가 textfield를 가려버리는데 뭐가 문젠가요 참고로 textfield는 scrollview 내부에 있습니다.


#swiftui 키보드 내리기 #swiftui 키보드 화면 올리기 #swiftui 키보드 감지 #swiftui 키보드 스크롤

profile_image 익명 작성일 -

SwiftUI에서 키보드가 텍스트 필드를 가리는 문제는 키보드가 나타날 때 뷰가 자동으로 조정되지 않기 때문에 발생합니다. ScrollView 내부에 있는 텍스트 필드의 경우, 키보드가 나타날 때 ScrollView의 오프셋을 조절하여 텍스트 필드를 가리지 않게 할 수 있습니다. 이를 해결하기 위한 방법은 아래와 같습니다.

1.KeyboardAvoiding 뷰를 만들어 사용하십시오.

struct KeyboardAvoiding: ViewModifier { @State private var keyboardHeight: CGFloat = 0 func body(content: Content) -> some View { content .padding(.bottom, keyboardHeight) .onAppear(perform: subscribeToKeyboardEvents) } private func subscribeToKeyboardEvents() { NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: .main) { (notification) in guard let keyboardSize = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect else { return } keyboardHeight = keyboardSize.height } NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillHideNotification, object: nil, queue: .main) { (_) in keyboardHeight = 0 } } }

2.이제 KeyboardAvoiding 뷰를 사용하여 키보드가 텍스트 필드를 가리지 않게 하십시오.

struct ContentView: View { var body: some View { ScrollView { VStack { // 여기에 텍스트 필드와 다른 요소들을 추가하세요. TextField("Placeholder", text: $yourTextBinding) } } .modifier(KeyboardAvoiding()) } }

이 방법을 사용하면 키보드가 텍스트 필드를 가리지 않도록 스크롤 뷰의 오프셋을 조절합니다. 이로 인해 키보드가 텍스트 필드 위로 스크롤되어 사용자가 텍스트를 입력할 수 있습니다.