Я пытаюсь переместить мой self.view вверх, когда появляется клавиатура.Перемещение вида, когда клавиатура показывает для secureTextEntry
Я нормальный:
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil)
в моем viewDidLoad()
, как я обычно делаю. С этими двумя функциями.
func keyboardWillShow(sender: NSNotification) {
self.view.frame.origin.y -= 160
}
func keyboardWillHide(sender: NSNotification) {
self.view.frame.origin.y += 160
}
Однако этот конкретный вид. имеет разные типы клавиатур для UITextFields
.
В частности, эти текстовые поля являются:
firstName - normal keyboard
lastName - normal keyboard
email - email keyboard
password - secureTextEntry
Мои обычные функции, кажется, работает хорошо для всех из них, кроме пароля. К сожалению, когда я нажимаю «next/return» на мой адрес электронной почты UITextField
. Он переводит мой взгляд на еще 160 пунктов.
Очевидно, что я добавляю еще одну клавиатуру, не снимая ее.
Моя первая мысль состояла в том, чтобы просто изменить значение, когда вызывается конкретный UITextField
. Но представление действует так, как предполагается, когда я просто нажимаю пароль UITextField
.
Это только беспорядок, когда я нахожусь в одном из других представлений, затем нажмите кнопку «Далее» или нажав на пароль UITextFIeld
, поэтому я не могу просто указать, насколько перемещается вид, в textFieldShouldReturn
.
Как правильно перемещать представление, принимая во внимание проблему secureTextEntry?
Как было предложено Джоко Сармьенто Я попытался это так:
var originalFrame: CGRect!
override func viewDidLoad() {
originalFrame = self.view.frame
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.view.frame = originalFrame
return false
}
Я также добавил self.view.frame = originalFrame
к моему событию touchesBegan, поскольку, как упоминалось ранее, это не только по возвращении.
Но вышеуказанная попытка не сработала, вот скриншот поля пароля после нажатия рядом с полем электронной почты. И он остается таким же образом после отклонения текстового поля.
Я также попытался сдвинув его с self.view.frame = originalframe.origin.y+160
вместо этого. Но все еще вызывает проблему с полем пароля.
Причина, по которой это беспорядок происходит из-за моего errorView, который меняет высоту. Сделать это так, чтобы originalFrame
был некорректен.
Любая помощь была бы принята с благодарностью!
Пробовал, но он все еще запутывается. Я отредактирую свой пост с обновленным снимком экрана –
Есть ли конкретная причина, по которой вы не можете использовать UIScrollView? Если вы можете это сделать, это очень поможет: http://creativecoefficient.net/swift/keyboard-management/ –
Я перерисовал viewController со списком прокрутки. И добавил точный код в ссылке. Однако ничего не происходит, когда я нажимаю текстовое поле и появляется клавиатура. (мой scrollview назван тем же). –