Как заставить клавиатуру уйти в средстве моделирования iPhone

Прежде всего, спасибо @gmogames, что нашли время, чтобы предложить свои предложения. Всегда полезно иметь возможность обмениваться идеями !!!

Проблема действительно имела отношение к сбросу точки привязки (или центра) представления перед применением нового преобразования, чтобы анимация работала правильно. Поэтому, используя гораздо более простой пример масштабирования вида после его перемещения , вот как выглядит новый метод:

extension UIView {
    func scaleView(scaleFactor: CGPoint, duration: TimeInterval) {
        // store the view original center
        let oCenter = self.center

        // get the current transformation
        let cTransform = self.transform

        // set the new center of the view 
        self.center = CGPoint(x: self.frame.midX, y: self.frame.midY)

        // clears the transform matrix from potential prior translation
        // Note that you need to take into account potential prior scale of the view into the translation vector!!
        self.transform = self.transform.translatedBy(x: -cTransform.tx / cTransform.a, y: -cTransform.ty / cTransform.d)


        // Animates the transformation
        let animator = UIViewPropertyAnimator(duration: duration, timingParameters: UICubicTimingParameters(controlPoint1: CGPoint(x: 0, y: 0), controlPoint2: CGPoint(x: 1, y: 1))
        animator.addAnimations {
            self.transform = self.transform.scaledBy(x: scaleFactor.x, y: scaleFactor.y)
        }
        // resets the View to its original center and apply the transformation so that the view stays in the right end position
        animator.addCompletion { (position) in
            if position == UIViewAnimatingPosition.end {
                self.center = oCenter
                self.transform = cTransform.scaledBy(x: scaleFactor.x, y: scaleFactor.y)
            }
        }
        animator.startAnimation()
    }
}

Вот результат анимации: move + шкала + шкала + вернуться к оригиналу

enter image description here

20
задан stu 5 May 2009 в 03:43
поделиться

2 ответа

Один из способов сделать это - установить объект в качестве делегата для текстового поля и реализовать

- (BOOL)textFieldShouldReturn:(UITextField *)textField

, в котором вы вызываете [textField resignFirstResponder]

Это вызовет клавиатура пропадает, когда они нажимают кнопку возврата / перехода / готово (независимо от того, какой вы установили нижнюю правую клавишу клавиатуры).

Для получения дополнительной информации см. ссылку UITextFieldDelegate .

19
ответ дан 29 November 2019 в 23:52
поделиться

- (BOOL) textFieldShouldReturn: (UITextField *) textField в вашем делегате вызывается при нажатии кнопки возврата.

Вы хотите вызвать [textField resignFirstResponder] и затем верните ДА . Это должно делать свое дело. Также убедитесь, что делегат установлен. Если есть сомнения, добавьте точку останова или NSLog и проверьте.

5
ответ дан 29 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: