-2
하위보기 안에 두 개의 텍스트 필드가 있고 하위보기 및 키보드 안에 클릭 한 텍스트 필드 중 하나가 클릭되면 하위보기를 이동하려고합니다. 문제는 하위 뷰가 올라와서 두 번째 텍스트 필드를 클릭 할 때 하위 뷰가 아래로 이동한다는 것입니다. 텍스트 필드를 제외한보기를 터치하면 숨겨집니다.키보드가 하위보기의 텍스트 필드 위에 표시 될 때 하위보기 이동
내 두 텍스트 필드 및 하위 뷰의 정의입니다.
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var loginView: UIView!
있는 viewDidLoad의 코드
NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillHide), name: .UIKeyboardWillShow, object: nil)
그리고 보여 다른 두 기능 및 숨기기 키보드
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if loginView.frame.origin.y == 0{
let height = keyboardSize.height
self.loginView.frame.origin.y += height
}
}
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if loginView.frame.origin.y != 0 {
let height = keyboardSize.height
self.loginView.frame.origin.y -= height
}
}
}
나는 동안이 텍스트 필드를 클릭 할 때 내가 하위 뷰를 피할 수있는 방법을 알고 싶습니다
하위보기가 작동합니다.
내가 self.view의 상단까지의 서브 뷰를 이동하지 않으려는, 그냥 키보드 높이만큼 서브 뷰를 이동하려는. 그리고 고맙지 만 내 제안과 마찬가지로 예상대로 귀하의 제안이 작동하지 않았습니다. – mehmeet43
내 코드는 키보드 높이에 따라 뷰를 위로 이동합니다. 기본적으로 키보드의 y- 원점은 0이 될 것이고 키보드가 오면 높이가 100이라고 가정 해 보겠습니다. 그러면 뷰가 -100 y- 원점에 있어야하므로 내 코드가됩니다. 내 코드는 마지막 원점이 무엇이든 관계없이 위의 점을 100 포인트 위로 이동합니다. 하지만 당신은 이전 y 위치에서 100 포인트를 위로 이동시키기 위해 시야를 위로 움직이고있었습니다. 그래서 그냥 + = (- 높이)를 빼면 y를 빼지 않고 y 값을 무효화합니다. –