Как получить значение из NSValue в Swift?

108
15

Вот что я пробовал до сих пор


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, но когда я регистрирую frame в консоли, он указывает что-то вроде NSRect {{x, y}, {w, h}}.

спросил(а) 2021-01-19T16:10:49+03:00 3 месяца, 2 недели назад
1
Решение
144

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

ответил(а) 2021-01-19T16:10:49+03:00 3 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема