У меня есть текстовое поле со скрытой клавиатурой (так как я использую его с bluetooth). Однако в iOS9 панель быстрого доступа продолжает появляться.
Есть ли способ скрыть это?
Большое вам спасибо!
У меня есть текстовое поле со скрытой клавиатурой (так как я использую его с bluetooth). Однако в iOS9 панель быстрого доступа продолжает появляться.
Есть ли способ скрыть это?
Большое вам спасибо!
Вы можете передать свое текстовое поле вместо userNameTextField, для которого вы хотите удалить панель ярлыков.
UITextInputAssistantItem* item = [userNameTextField inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
В Swift 2.0
if #available(iOS 9.0, *) {
let item : UITextInputAssistantItem = yourTextView.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []
} else {
// Fallback on earlier versions
}
У меня была такая же проблема. И так начинается поиск SO. Таким образом, вышеупомянутое помогло мне, но все, "если iOS9 вещь" может быть лучше всего обрамлено следующим образом:
if ([self respondsToSelector:@selector(inputAssistantItem)]) {
// iOS9.
UITextInputAssistantItem* item = [self inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
}
К счастью, я создал подкласс UITextField (CHTextField) и использовался везде. Поэтому было очень легко исправить это в чрезмерном методе "init".
Надеюсь, что это поможет.
В качестве альтернативы просто создайте расширение для UITextField в Swift 2.0, как это.
extension UITextField
{
public func hideAssistantBar()
{
if #available(iOS 9.0, *) {
let assistant = self.inputAssistantItem;
assistant.leadingBarButtonGroups = [];
assistant.trailingBarButtonGroups = [];
}
}
}
Затем вы можете просто вызвать hideAssistantBar() в любом текстовом поле, которое вам нравится.
@IBOutlet weak var myTextField: UITextField?;
override public func viewDidLoad() {
super.viewDidLoad();
myTextField?.hideAssistantbar();
}
Легкий способ сделать это для всех текстовых полей в вашем приложении - создать категорию на UITextInputAssistantItem
и переопределить геттеры для leadingBarButtonGroups
и trailingBarButtonGroups
следующим образом:
@implementation UITextInputAssistantItem (RemoveBars)
- (NSArray<UIBarButtonItemGroup *> *)leadingBarButtonGroups
{
return @[];
}
- (NSArray<UIBarButtonItemGroup *> *)trailingBarButtonGroups
{
return @[];
}
@end
Это работало для меня на iOS 9.x и 8.x, не нужно никаких условных кодов.
Будьте осторожны с этим, хотя, это переопределяет эти свойства для ВСЕ, который использует UITextInputAssistantItem
Просто поговорим о других ответах здесь. Я объединил некоторый код Swift 2.0, который будет проходить через все подпункты данного представления и отключить UITextInputAssistantItems для всех UITextFields и 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)
}
}
}
Затем вы можете вызвать эту функцию, передав любой вид, с которого вы хотите начать. Я называю это внутри моего метода ViewDidLoad()
и передаю self.view
как hideTheAssistantBar(self.view)
.
Я действительно сделал шаг вперед для своих нужд и добавил эту функцию в класс-помощник, который я использую для общего кода. Поэтому внутри моей функции ViewDidLoad()
я просто вызываю helper.hideTheAssistantBar(self.view)
, а затем мне не нужно помещать эту функцию в каждый файл.
Надеюсь, что это поможет кому-то прийти к поиску простого способа удалить панель помощника из всех UITextFields и UISearchBars одним махом.
Благодаря @Arkader для быстрого кода, чтобы рекурсивно найти все subviews. Подвид Swift List