UIView にテキストを表示するために UITextView を使用していますが、このビュー内でテキスト ブロックを垂直方向に配置する必要があります。
そのために、オンラインで見つけたオブザーバー メソッドを使用しましたが、ほとんどの場合、うまく機能します。
ビューで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)
}
私の問題は、このコントローラーをポップするメニュー コントローラーがあり、アンワインド セグエを使用してメニューから UITextView コントローラーに戻ることです。そうすると、テキスト ブロックは画面の上部に戻ります。
@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
if(segue.identifier == "CloseMenuSegue"){
self.dismissViewControllerAnimated(true, completion: nil)
}
}
アンワインド内にオブザーバーを追加しようとしましたが、効果がありません。ここで何かが恋しいですか?
ありがとう、