[Iphone] El teclado muestra y luego se oculta inmediatamente al mostrar MFMessageComposeViewController


Answers

Encontré estos síntomas con una instalación Sencha Touch 2.2 y Cordova 2.6.0 (específicamente, dispositivos iOS 6+).

El problema era que el marco web robaba el enfoque del modo nativo de SMS Composer, que se produce normalmente después de que se haya mostrado y cerrado correctamente el primer modalizador de SMS Composer.

Una event.preventDefault() y event.stopPropagation() una vez que el evento haya sido disparado (o event.stopEvent() en tierra Sencha) resolvió esto.

Espero que esto ayude,

-James

Question

Estoy construyendo una aplicación PhoneGap usando Cordova 2.2 para IOS. Estoy experimentando un comportamiento extraño al llamar a un complemento obj-c nativo que he escrito para mostrar el MFMessageComposeViewController.

La configuración es muy simple: tengo un evento tap asociado a un elemento UI, que cuando se presiona, hace una llamada a mi complemento PhoneGap, pasa un número y un mensaje de texto, luego muestra el MFMessageComposeViewController con los parámetros pre-poblados .

Mi javascript se ve así:

$(document).bind('deviceready', function(){ 

    $(".theButton").tap(function(){     

        cordova.exec(function(){}, function() {}, "PhoneGapSms", "SendSms", [db.getItem("profile_sms"), db.getItem("profile_emergency")]);

    }); 
});

Y mi código obj-c se ve así:

- (void)SendSms:(CDVInvokedUrlCommand*)command
{

    CDVInvokedUrlCommand* myCommand = command;

    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];

    NSString* body = [command.arguments objectAtIndex:0];
    NSString* toRecipientsString = [command.arguments objectAtIndex:1];

        if(body != nil)
            picker.body = body;

        if(toRecipientsString != nil)
            [picker setRecipients:[ toRecipientsString componentsSeparatedByString:@","]];


    picker.messageComposeDelegate = self;

    [self.viewController presentModalViewController:picker animated:YES];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];


    [picker release];

}

Entonces, en general, cosas muy simples.

Mi problema es esto:

Cuando mi iPhone está conectado a mi Mac y la aplicación se ejecuta desde XCode , la superposición de Message Composer aparece genial, con mis valores rellenos previamente. La siguiente imagen que muestra la interfaz de SMS aparece bien mientras está conectado a XCode:

Cuando mi iPhone se desenchufa de mi Mac, y la aplicación se ejecuta desde la plataforma de resorte , la cubierta se desliza hacia arriba, el teclado comienza a deslizarse hacia arriba y luego se desliza hacia abajo , lo que hace imposible escribir o enviar el mensaje. Esto es lo que parece cuando no está conectado a Mac / Xcode: el teclado comienza a deslizarse hacia arriba y luego se desliza hacia abajo (~ <seg) dejando la siguiente interfaz:

No puedo, por mi propia vida, descubrir qué podría causar que el teclado se oculte cuando no se ejecuta desde XCode, pero funciona perfectamente cuando es así.

¿Hay alguna manera de 'forzar' que el teclado se muestre, o posiblemente poner todo el modalviewcontroller como primer respondedor de alguna forma o forma?

¡Cualquier sugerencia es apreciada!

Editar:

El teclado aparecerá de nuevo si hace clic en el área de contacto