Сегодня я обновился до Xamarin.iOS 8.6.0.51 и переключился на новый Unified API
.Ошибка CS1540/CS0122: Получение клавиатуры не работает после переключения на унифицированный API
Теперь я хочу, чтобы получить размер клавиатуры (этот код работал раньше):
var val = new NSValue (notification.UserInfo.ValueForKey (UIKeyboard.FrameBeginUserInfoKey).Handle);
RectangleF keyboardSize = val.RectangleFValue;
С помощью инструмента миграции RectangleF
превращается в CGRect
, но ошибки я получаю здесь
Ошибка CS1540: не удается получить защищенный элемент
Foundation.NSValue.NSValue(System.IntPtr)' via a qualifier of type
Foundation.NSValue '. Классификатор должен быть типа `MyApp.SomeViewController 'или производные от него (CS1540)
и
CS0122 Ошибка:` Foundation.NSValue.NSValue (System.IntPtr)' является недоступным из-за его уровня защиты (CS0122)
Как я могу это решить? Я могу удалить new NSValue(...)
, но RectangleFValue
все еще не работает, и мне понадобится замена/другой способ.
Edit:
По jonathanpeppers я изменил мой код:
NSValue keyboardFrameBegin = (NSValue)notification.UserInfo.ValueForKey (UIKeyboard.FrameBeginUserInfoKey);
CGRect keyboardSize = keyboardFrameBegin.CGRectValue;
Это не выдаст ошибку больше, но я не могу проверить его дальше, потому что я нахожусь в процесс перехода на унифицированный API, и все еще есть некоторые ошибки для исправления.
Я пробовал ваш подход (см. Мой отредактированный вопрос), и он не вызывает ошибку в этом месте. Я дам вам галочку, если я смогу полностью проверить свое приложение. – testing
Это работает для меня. –