SwiftUI/Views

[SwiftUI] Form에서 스크롤 시 키보드 숨기기

_히처리_ 2023. 9. 14. 22:41

Form에서 TextField가 있을 때, 스크롤 시 키보드는 감추는 예제이다.

 

 

먼저 키보드를 감추는 메서드를 View에 확장해서 쉽게 키보드를 감출 수 있게 한다.

import Foundation
import SwiftUI

extension View {
  func hideKeyboard() {
    UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
  }
}

 

 

그리고 Form에 simultaneousGesture 수정자를 추가하고, 드래그 제스처가 발생 시 키보드를 감추는 메서드를 호출한다.

    var body: some View {
        Form {
            ...
        }
        .simultaneousGesture(DragGesture().onChanged({ _ in
            hideKeyboard()
        }))
    }
}