teclado tamaño samsung mas letras las hacer grandes grande google como celular cambiar agrandar achico c# ios xamarin.ios xamarin uikeyboard

c# - samsung - Error CS1540/CS0122: obtener el tamaño del teclado no funciona después de cambiar a la API Unificada



se achico el teclado de mi samsung (2)

¿Puedes usar un elenco?

var val = (NSValue)notification.UserInfo.ValueForKey (UIKeyboard.FrameBeginUserInfoKey); RectangleF keyboardSize = val.RectangleFValue;

Raramente deberías tener problemas con los identificadores en Xamarin.iOS.

Para estar absolutamente seguro de a qué lanzar, depurar y ver cuál es el tipo subyacente primero:

NSObject val = notification.UserInfo.ValueForKey (UIKeyboard.FrameBeginUserInfoKey); Console.WriteLine("Type: " + val.GetType());

Hoy actualicé a Xamarin.iOS 8.6.0.51 y cambié a la nueva Unified API .

Ahora quiero obtener el tamaño del teclado (este código funcionó antes):

var val = new NSValue (notification.UserInfo.ValueForKey (UIKeyboard.FrameBeginUserInfoKey).Handle); RectangleF keyboardSize = val.RectangleFValue;

Con la ayuda de la herramienta de migración, RectangleF se convierte a CGRect , pero los errores que CGRect aquí son

Error CS1540: no se puede acceder al miembro protegido Foundation.NSValue.NSValue(System.IntPtr)'' via a qualifier of type Foundation.NSValue''. El calificador debe ser del tipo `MyApp.SomeViewController ''o derivado de él (CS1540)

y

Error CS0122: `Foundation.NSValue.NSValue (System.IntPtr) ''es inaccesible debido a su nivel de protección (CS0122)

¿Como puedo resolver esto? Puedo eliminar new NSValue(...) , pero RectangleFValue todavía no funciona y necesitaría un reemplazo / otra forma.

Editar:

De acuerdo con jonathanpeppers modifiqué mi código a:

NSValue keyboardFrameBegin = (NSValue)notification.UserInfo.ValueForKey (UIKeyboard.FrameBeginUserInfoKey); CGRect keyboardSize = keyboardFrameBegin.CGRectValue;

Esto ya no arroja un error, pero no puedo probarlo más porque estoy en proceso de migrar a la API Unificada y todavía hay algunos errores que corregir.


Los .ctor(IntPtr) en NSObject podrían ser mal utilizados y NSObject problemas más adelante. Además, como mencionó @jonathanpeppers, no fueron necesarios para muchos escenarios (como este).

Otra forma de hacerlo (por ejemplo, si no tiene nada más que un identificador), como se documenta aquí , es utilizar el ObjCRuntime.Runtime.GetNSObject<T> (IntPtr) . Eso asegurará que el NSObject -subclass se crea correctamente.