UITextView keyboardDismissMode Bug

Acabo de encontrar un error molesto con la nueva propiedad keyboardDismissMode de la scroll view . Cuando se usa esto con una text view con el valor UIScrollViewKeyboardDismissModeInteractive y se descarta el keyboard, la scroll view parece saltar hasta la parte superior antes de que continúe desacelerándose.

Presenté un informe de errores con Apple, pero necesito una solución. He probado el DAKeyboardControl sin la nueva compatibilidad con iOS7 que detrás de escena usa el keyboardDismissMode y todavía lo hace, lo que para mí indica que este es un problema mucho más profundo.

¿Alguna sugerencia?

para este problema mejor codifique con scrollviewDelegete y simplemente mencione cuándo desea descartar el keyboard a través de ResignFirstResponder

Parece un error o simplemente un estado pnetworkingeterminado no ideal. Pero en function del código en el proyecto de testing, algo como el siguiente puede funcionar después de un ajuste más fino.

Hay dos problemas con el código de muestra, uno es que no estás haciendo nada sobre el tamaño del text cuando aparece el keyboard, por lo que no puedes usar ni ver el text debajo del keyboard. Hay otras soluciones, pero una solución rápida y sucia es cambiar el tamaño del marco (en una aplicación de envío). También tomaría la información de animation y animaría el cambio de marco de vista para que coincida con la animation del keyboard, que está más allá del scope de esta pregunta. Haces eso en 'willShow' o similar, y lo traes de vuelta en 'didHide' o similar.

Luego, el desplazamiento de contenido se modifica cuando está oculto y parece que hay algunos estados extraños mientras lo está arrastrando fuera de la pantalla antes y alnetworkingedor de sus devoluciones de llamada para ocultar y desplazar los cambios de vista. Acabo de save el estado y "arreglarlo" una vez que el keyboard desaparece y he actualizado la vista de text.

Creé algunas properties y una salida en el guión gráfico para codificar con la vista de text.

 - (vacío) viewDidLoad
 {
     [super viewDidLoad];

     [[NSNotificationCenter defaultCenter] addObserver: auto selector: @selector (keyboardWillShow :) nombre: UIKeyboardWillShowNotification object: nil];

     [[NSNotificationCenter defaultCenter] addObserver: auto selector: @selector (keyboardDidHide :) nombre: UIKeyboardDidHideNotification object: nil];
 }

 - (void) keyboardWillShow: notificación (NSNotification *)
 {
     NSDictionary * info = [notificación userInfo];
     CGSize size = [[info objectForKey: UIKeyboardFrameBeginUserInfoKey] CGRectValue] .size;

     CGRect rect = self.textView.frame;
     rect.size.height - = size.height;
     self.textView.frame = rect;
 }

 - (void) keyboardDidHide: notificación (NSNotification *)
 {
     NSLog (@ "====== keyboardDidHide =======");

     NSDictionary * info = [notificación userInfo];
     CGSize size = [[info objectForKey: UIKeyboardFrameBeginUserInfoKey] CGRectValue] .size;

     CGRect rect = self.textView.frame;
     rect.size.height + = size.height;
     self.textView.frame = rect;


     self.hidingKeyboard = SÍ;
 }

 - (void) scrollViewDidScroll: (UIScrollView *) scrollView
 {
     NSLog (@ "% f", scrollView.contentOffset.y);
     si (self.hidingKeyboard == YES)
     {
         scrollView.contentOffset = self.lastOffset;
         self.hidingKeyboard = NO;
         NSLog (@ "====== reset =======");
     }
     más
         self.lastOffset = scrollView.contentOffset;
 }