본문 바로가기
Project/SwiftUI 블록와이드

[SwiftUI Project] 다른 View를 탭하거나 스크롤 하면 키보드 내리기

by iOS_woo 2022. 9. 16.

키보드 내리기

 

텍스트필드가 아닌 다른 곳을 탭했을 때, ScrollView에서 스크롤 했을 때 키보드를 내릴 수 있는 방법입니다.

 

1. Cancel  버튼을 탭 했을 때 키보드 내리기

import Foundation
import SwiftUI

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

키보드를 내리는  endEditing 함수를 작성합니다. 

Text("Cancel")
   .foregroundColor(Color.theme.binanceColor)
   .font(.subheadline)
   .onTapGesture {
       withAnimation {
       	  showSearchView.toggle()
       }
       UIApplication.shared.endEditing() <-키보드 내리기
   }

이후 원하는 컨텐츠에 onTapGesture로 작성해주면 탭할 때마다 키보드가 내려가게 됩니다. 

 

2. ScrollView에서 스크롤 했을 때 키보드 내리기

AllCoinListView(viewModel: viewModel)
   .padding(.top, 10)
   .onTapGesture {
       UIApplication.shared.endEditing()
    }
   .onAppear {
       UIScrollView.appearance().keyboardDismissMode = .onDrag <- 스크롤하면 키보드 내리기
    }

원하는 스크롤뷰에 onAppear로 위 코드를 작성해주면 간단하게 구현 할 수 있습니다. 

 

 

ScrollView 키보드 내리기 참고: 

 

Possible to achieve `ScrollView` interactive keyboard dismissal in SwiftUI?

https://developer.apple.com/documentation/uikit/uiscrollview/keyboarddismissmode/interactive On a typical UIScrollView, one may set this property to have the keyboard dismiss interactively alongsi...

stackoverflow.com

 

댓글