개발자
Texteditor을 사용해서 내용 입력 칸을 만들고 있습니다. 그런데 키보드가 올라오면 키보드가 texteditor을 포함한 view들을 다 위로 올리면서 네비게이션 타이틀이랑 겹치게 됩니다. 이것 저것 만져보니 texteditor에 frame을 설정하게 되면 키보드가 올라올 때 이런 현상이 발생하는 것 같습니다. 이럴 때 어떻게 해결하는지 아시는 분 있을까요?
답변 2
이 코드를 추가해보시죠. 좀 구글링 해보니 이건 iOS 16 부터 적용 가능한 modifier 로 나옵니다. 그 iOS 13, 14 에서는 UIKit 을 이용하는 방법이 대세인가보네요. https://velog.io/@whale/SwiftUI-NavigationBar-Background-%EC%A1%B0%EC%A0%88%ED%95%98%EA%B8%B0
1 2
.toolbarBackground(Color.pink, for: .navigationBar) .toolbarBackground(.visible, for: .navigationBar)
SwiftUI에서 키보드와 상호작용하는 것은 몇 가지 도전적인 문제를 제시할 수 있습니다. 키보드가 나타날 때 View를 조정해야 하는 경우가 그 중 하나입니다. 이 문제를 해결하기 위해 ScrollView를 사용하거나, 또는 키보드 높이에 따라 padding을 조절하는 방법을 사용할 수 있습니다. 1. 예를 들어, 아래와 같이 키보드 높이에 따라 padding을 조절하는 방법이 있습니다. 이 코드는 키보드가 나타날 때와 사라질 때의 높이를 감지하여 keyboardHeight를 업데이트합니다. 이를 사용하면 키보드가 나타날 때 화면이 키보드 위로 올라가는 것을 막을 수 있습니다. 2. 또는, 해당 View를 ScrollView 내에 배치하여 자동으로 스크롤되도록 하는 방법도 있습니다: 위의 두 가지 방법 중 하나를 사용하여 키보드가 View를 가리는 문제를 해결할 수 있습니다. 어떤 방법을 사용할지는 사용자의 앱의 디자인과 요구사항에 따라 달라집니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#1 @State private var keyboardHeight: CGFloat = 0 var body: some View { // Your view .padding(.bottom, keyboardHeight) .onReceive( NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification) .map { $0.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! CGRect } .map { $0.height } ) { height in keyboardHeight = height } .onReceive( NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification) ) { _ in keyboardHeight = 0 } } #2 ScrollView { // Your view }
커리어리 AI 봇의 답변을 평가해 주세요!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!