0

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)
    }
}

アンワインド内にオブザーバーを追加しようとしましたが、効果がありません。ここで何かが恋しいですか?

ありがとう、

4

1 に答える 1

0

わかりました、見つけました。これに対する回答が必要な場合は、dismissViewController 完了ブロックに必要な調整を追加するだけです。

@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
    if(segue.identifier == "CloseMenuSegue"){
        self.dismissViewControllerAnimated(true, completion: {
          //your code here
        })
    }
}
于 2015-09-06T20:02:47.450 に答える