Вертикальное выравнивание UITextView из Unwind Segue Swift

Я использую UITextView для отображения текста в UIView, и мне нужно, чтобы текстовый блок был выровнен по вертикали внутри этого представления.

Для этого я использовал метод наблюдателя, который нашел в Интернете, и в большинстве случаев он работал довольно хорошо:

в представленииDidLoad:

moodPhrase.addObserver(self, forKeyPath: "contentSize", options: NSKeyValueObservingOptions.New, context: nil)

затем наблюдатель:

//Update phrase content position (vertical alignment)
    override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {

        var topCorrect : CGFloat = (moodPhrase.frame.height - moodPhrase.contentSize.height);
        topCorrect = topCorrect < 0.0 ? 0.0 : topCorrect / 2
        moodPhrase.contentOffset = CGPoint(x: 0, y: -topCorrect)

    }

моя проблема в том, что у меня есть контроллер меню, который всплывает над этим контроллером, и я использую unwind segue, чтобы вернуться из меню к контроллеру UITextView. При этом текстовый блок возвращается в верхнюю часть экрана.

@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
    if(segue.identifier == "CloseMenuSegue"){
        self.dismissViewControllerAnimated(true, completion: nil)
    }
}

Я попытался добавить наблюдателя внутри раскрутки, но это не дало никакого эффекта. Я что-то пропустил здесь?

Благодарность,


person SKYnine    schedule 06.09.2015    source источник


Ответы (1)


хорошо, я нашел это. Для тех, кому нужен ответ на этот вопрос, просто добавьте необходимую корректировку в блок завершения rejectViewController.

@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
    if(segue.identifier == "CloseMenuSegue"){
        self.dismissViewControllerAnimated(true, completion: {
          //your code here
        })
    }
}
person SKYnine    schedule 06.09.2015