2017-01-27 4 views
1

У меня есть AlertController с UITextView.двигаться вверх UIAlertController style Alert с UITextView при наличии клавиатуры

Когда UITexView становится первым ответчиком, альтер не двигается вверх с помощью клавиатуры.

это мой код:

@IBAction func showAlert(sender: AnyObject) { 

    let alertController = UIAlertController(title: "Hello, I'm alert! \n\n\n\n\n\n\n", message: "", preferredStyle: .alert) 

    let rect  = CGRect(x: 15, y: 15, width: 240, height: 150)//CGRectMake(15, 50, 240, 150.0) 
    let textView = UITextView(frame: rect) 

    textView.font    = UIFont(name: "Helvetica", size: 15) 
    textView.textColor   = UIColor.lightGray 
    textView.backgroundColor = UIColor.white 
    textView.layer.borderColor = UIColor.lightGray.cgColor 
    textView.layer.borderWidth = 1.0 
    textView.text    = "Enter message here" 
    textView.delegate   = self 

    alertController.view.addSubview(textView) 

    let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 
    let action = UIAlertAction(title: "Ok", style: .default, handler: { action in 

     let msg = (textView.textColor == UIColor.lightGray) ? "" : textView.text 

     print(msg!) 

    }) 
    alertController.addAction(cancel) 
    alertController.addAction(action) 


    self.present(alertController, animated: true, completion: { 

     textView.becomeFirstResponder() 
    }) 
} 

и это мой результат:

enter image description here есть решение?

заранее спасибо

ответ

1

UIAlertController по умолчанию будет скользить вверх, когда они клавиатура показана на рисунке. Проблема здесь в том, что вы добавили subview к контроллеру предупреждения. Из UIAlertController docs:

Класс UIAlertController предназначен для использования как есть и не поддержки подклассов. Иерархия представления для этого класса является частной и не может быть изменена.

Добавление собственного подзаголовка к предупреждению идет вразрез с тем, что говорят документы и, вероятно, вызывает проблемы. Если вам требуется предупреждение с текстовым представлением, лучше всего создать собственный взгляд и самому управлять им.

+1

@ keithbhunter являются правильными. Кроме того, вы можете использовать текстовое поле 'func addTextField (configurationHandler: ((UITextField) -> Void)? = Nil) '. Этот управляется UIAlertViewController. –

Смежные вопросы