Swift 키보드 숨기기
UITextfeild
UITextView
에서 키보드에 숨겨진 문제가 자주 발생한다.UITextfeild
또는 UITextView
도입 코드 세그먼트
모든
.swift
파일에 다음 코드를 도입합니다import UIKit
private var kUIViewFrame = "kk_UIViewFrame"
extension UIViewController {
func setUpKeyboardAutoHidden() {
let notficaCenter = NSNotificationCenter.defaultCenter()
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(UIViewController.touchedHiddenKeyBoard))
objc_setAssociatedObject(self, &kUIViewFrame, NSValue(CGRect: self.view.frame), .OBJC_ASSOCIATION_RETAIN)
// tap ,
notficaCenter.addObserverForName(
UIKeyboardWillShowNotification,
object: nil,
queue: NSOperationQueue.mainQueue()) { (notification) -> Void in
self.view.addGestureRecognizer(tapGesture)
}
// Tap , App UIResponder
notficaCenter.addObserverForName(
UIKeyboardWillHideNotification,
object: nil,
queue: NSOperationQueue.mainQueue()){ (notification) -> Void in
self.view.removeGestureRecognizer(tapGesture)
}
//
notficaCenter.addObserverForName(
UIKeyboardWillChangeFrameNotification,
object: nil,
queue: NSOperationQueue.mainQueue()) { (notification) -> Void in
let usrInfo = notification.userInfo!
let keyboardRect = usrInfo[UIKeyboardFrameEndUserInfoKey]!.CGRectValue
if let respView = self.view.findFirstResponder {
let convertRect = self.view.convertRect(respView.frame, fromView: respView.superview)
let offset = convertRect.origin.y + convertRect.height - keyboardRect.origin.y
var orignRect = objc_getAssociatedObject(self, &kUIViewFrame).CGRectValue
if offset > 0 {
orignRect.origin.y = -offset
}
UIView.animateWithDuration(0.3, animations: { () -> Void in
self.view.frame = orignRect
})
}
}
}
//
func touchedHiddenKeyBoard() {
self.view.endEditing(true)
}
}
사용
위 코드 세그먼트를 도입한 후 키보드 숨기기를 구성해야 하는
UIViewController
에 다음 코드를 추가합니다.class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//
setUpKeyboardAutoHidden()
}
}
문장은 나의 개인 블로그에서 나온 것이니, 만약 옮겨 싣으려면 출처를 밝혀 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.