7

これが私がこれまでに試したことです

func onKeyboardRaise(notification: NSNotification) {
    var notificationData = notification.userInfo
    var duration = notificationData[UIKeyboardAnimationDurationUserInfoKey] as NSNumber
    var frame = notificationData[UIKeyboardFrameBeginUserInfoKey]! as NSValue
    var frameValue :UnsafePointer<(CGRect)> = nil;
    frame.getValue(frameValue)
}

しかし、私はいつも でクラッシュするようですframe.getValue(frameValue)

UIKeyboardFrameBeginUserInfoKeyのドキュメントにはオブジェクトを返すと書かれているため、少し混乱しますが、コンソールCGRectにログインすると、 .frameNSRect {{x, y}, {w, h}}

4

1 に答える 1

10

getValue()適切なサイズの (初期化された) 変数へのポインターを使用して呼び出す必要があります。

var frameValue = CGRect(x: 0, y: 0, width: 0, height: 0)
frame.getValue(&frameValue)

ただし、便利な方法を使用する方が簡単です。

let frameValue = frame.CGRectValue() // Swift 1, 2
let frameValue = frame.cgRectValue() // Swift 3
于 2014-08-02T04:54:46.223 に答える