Teclado personalizado InputAccessoryView no visible en iOS 11

He implementado la vista de accesorios de input personalizados que estaba funcionando bien hasta iOS 10.3.1. Pero no es visible en iOS 11 beta.

¿Alguien ha experimentado este problema?

PSA: si usa una barra UITool como vista personalizada, actualmente está rota en iOS 11 GM. En lugar de perder el pelo sobre cómo solucionarlo, simplemente cámbielo a UIView . Perderás el efecto borroso, pero funcionará.

Beta 3 acaba de salir y algunas personas dijeron que resolvió el problema, pero para mí no fue así.

Sin embargo, traté de establecer la vista de accesorios en algo estúpido (100 px de alto) y vi que la barra Deshacer / Rehacer / Pegar en los iPad estaba incorrectamente sentada sobre la parte superior de la barra de accesorios. Entonces agregué el siguiente código para deshacerse de la barra de manzanas (de todos modos era inútil para mi selector personalizado) y el problema desapareció

Espero que esto ayude a alguien

- (void)textFieldDidBeginEditing:(UITextField*)textField { UITextInputAssistantItem* item = [textField inputAssistantItem]; item.leadingBarButtonGroups = @[]; item.trailingBarButtonGroups = @[]; } 

La pregunta que haces no tiene muchos detalles. Pero tuve el mismo problema al usar un inputAccessoryView y un inputView personalizado para el campo de text.

Y lo resolvió en iOS 11 al configurar el autoresizingMask de inputView personalizado en .flexibleHeight.

 yourCustomInputView.autoresizingMask = .flexibleHeight 

Espero que esto resuelva el problema. Si no, tal vez proporcione más información.

Aquí es cómo agrego el accesorio de input, en caso de que esto sea de más ayuda (como extensión del campo de text):

 public extension UITextField { public func addToolbarInputAccessoryView(barButtonItems: [UIBarButtonItem], textColour: UIColor, toolbarHeight: CGFloat = 44, backgroundColour: UIColor = .white) { let toolbar = UIToolbar() toolbar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: toolbarHeight) toolbar.items = barButtonItems toolbar.isTranslucent = false toolbar.barTintColor = backgroundColour toolbar.tintColor = textColour inputAccessoryView = toolbar } 

}

Y luego, en el InputView (no en el InputAccessoryView ), estaba usando un datepicker, por ejemplo, solo asegúrese de que la máscara de autorlogging del datepicker esté configurada a una altura flexible.

He tenido el mismo problema y descubrí que eliminar todas las restricciones bottom , top , leading , training , left y right para la vista que se asigna, accessoryView resolvió.

UIToolBar se rompe en iOS 11. Pero puede hacer lo mismo con UIView como inputAccessoryView. Fragmento de código de muestra aquí:

 CGFloat width = [[UIScreen mainScreen] bounds].size.width; UIView* toolBar = [[UIView alloc] initWithFrame:CGRectMake(0.0f,0.0f, width, 44.0f)]; toolBar.backgroundColor = [UIColor colorWithRed:0.97f green:0.97f blue:0.97f alpha:1.0f]; UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(20.0 , 0.0f, width, 44.0f)]; [titleLabel setFont:[UIFont fontWithName:@"Helvetica" size:13]]; [titleLabel setBackgroundColor:[UIColor clearColor]]; [titleLabel setTextColor:[UIColor networkingColor]]; [titleLabel setText:@"Title"]; [titleLabel setTextAlignment:NSTextAlignmentLeft]; [toolBar addSubview:titleLabel]; UIButton *doneBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [doneBtn setTitle:@"Done" forState:UIControlStateNormal]; doneBtn.tintColor = [UIColor colorWithRed:(float)179/255 green:(float)27/255 blue:(float)163/255 alpha:1]; [doneBtn.titleLabel setFont:[UIFont fontWithName:@"Helvetica" size:16]]; [doneBtn addTarget:self action:@selector(btnTxtDoneAction) forControlEvents:UIControlEventTouchUpInside]; [doneBtn setFrame:CGRectMake(width-70, 6, 50, 32)]; [toolBar addSubview:doneBtn]; [toolBar sizeToFit]; txtMessageView.inputAccessoryView = toolBar; 

Espero que esto ayude..:)