uitextfield - personalizar - Cómo ocultar la barra de acceso directo en iOS9
personalizar barra de estado android (7)
Alternativamente, simplemente cree una extensión para UITextField en Swift 2.0 como esta.
extension UITextField
{
public func hideAssistantBar()
{
if #available(iOS 9.0, *) {
let assistant = self.inputAssistantItem;
assistant.leadingBarButtonGroups = [];
assistant.trailingBarButtonGroups = [];
}
}
}
Luego puede llamar a hideAssistantBar () en cualquier campo de texto que desee.
@IBOutlet weak var myTextField: UITextField?;
override public func viewDidLoad() {
super.viewDidLoad();
myTextField?.hideAssistantbar();
}
Tengo un campo de texto con un teclado oculto (ya que lo estoy usando con bluetooth). Sin embargo, en iOS9 la barra de acceso directo sigue apareciendo.
¿Hay alguna manera de ocultarlo también?
Muchas gracias!
En Swift 3.0 y 4.0
self.textField.inputAssistantItem.leadingBarButtonGroups.removeAll()
self.textField.inputAssistantItem.trailingBarButtonGroups.removeAll()
En Swift 2.0
if #available(iOS 9.0, *) {
let item : UITextInputAssistantItem = yourTextView.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []
} else {
// Fallback on earlier versions
}
Puede pasar su nombre de campo de texto en lugar de userNameTextField para el que desea eliminar la barra de acceso directo.
UITextInputAssistantItem* item = [userNameTextField inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
Solo para ampliar las otras respuestas aquí. Emparejé un código Swift 2.0 que recorrerá todas las subvistas de una vista determinada y deshabilitará UITextInputAssistantItems para todos los UITextFields y UISearchBars.
func hideTheAssistantBar(view:UIView) {
//Check this view
for case let textField as UITextField in view.subviews {
let item : UITextInputAssistantItem = textField.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []
}
for case let searchBar as UISearchBar in view.subviews {
let item : UITextInputAssistantItem = searchBar.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []
}
//Now find this views subviews
let subviews = view.subviews
for subview : AnyObject in subviews {
if subview.isKindOfClass(UIView) {
hideTheAssistantBar(subview as! UIView)
}
}
}
A continuación, puede llamar a esta función pasando cualquier vista en la que desee comenzar.
Llamo a esto dentro de mi método
ViewDidLoad()
y paso
self.view
como
hideTheAssistantBar(self.view)
.
De hecho, fui un paso más allá para mis necesidades y agregué esta función a una clase auxiliar que uso para el código común.
Por lo tanto, dentro de mi función
viewDidLoad()
, en realidad solo llamo
helper.hideTheAssistantBar(self.view)
y luego no tengo que poner esa función en cada archivo.
Espero que esto ayude a alguien que viene buscando una manera fácil de eliminar la barra de asistente de todos los UITextFields y UISearchBars de una sola vez.
Gracias a @Arkader por el código rápido para encontrar recursivamente todas las subvistas. Subvistas de lista rápida
Tuve el mismo problema. Y así comienza una búsqueda de SO. Así que lo anterior me ayudó, pero en general, "si es iOS9" podría enmarcarse mejor así:
if ([self respondsToSelector:@selector(inputAssistantItem)]) {
// iOS9.
UITextInputAssistantItem* item = [self inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
}
Afortunadamente, había creado una subclase de UITextField (CHTextField) y estaba en uso en todas partes. Por lo tanto, fue una solución muy fácil solucionar esto en el método "init" anulado.
Espero eso ayude.
Una manera fácil de hacer esto para todos los campos de texto en su aplicación es crear una categoría en
UITextInputAssistantItem
y anular los
leadingBarButtonGroups
para
leadingBarButtonGroups
y
trailingBarButtonGroups
esta manera:
@implementation UITextInputAssistantItem (RemoveBars)
- (NSArray<UIBarButtonItemGroup *> *)leadingBarButtonGroups
{
return @[];
}
- (NSArray<UIBarButtonItemGroup *> *)trailingBarButtonGroups
{
return @[];
}
@end
Esto funcionó para mí en iOS 9.xy 8.x, no es necesario ningún código condicional.
Sin embargo
,
tenga cuidado con esto
, esto anula esas propiedades para
TODO lo
que usa
UITextInputAssistantItem