У меня есть текстовое поле со скрытой клавиатурой (так как я использую его с bluetooth). Однако в iOS9 панель быстрого доступа продолжает появляться.Как скрыть ярлык в iOS9
Есть ли способ скрыть это тоже?
Большое вам спасибо!
У меня есть текстовое поле со скрытой клавиатурой (так как я использую его с bluetooth). Однако в iOS9 панель быстрого доступа продолжает появляться.Как скрыть ярлык в 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
}
Просто FYI, вам нужно называть это на каждом UITextView или UITextField (в основном, все, что появляется на клавиатуре), поскольку каждое поле ввода имеет собственный UITextInputAssistantItem. – TenaciousJay
Я была такая же проблема. И так начинается поиск SO. Таким образом, выше помог мне, но в целом, «если iOS9 вещь» может быть лучше оформлена так:
if ([self respondsToSelector:@selector(inputAssistantItem)]) {
// iOS9.
UITextInputAssistantItem* item = [self inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
}
К счастью, я создал подкласс в UITextField (CHTextField) и был в использовать везде. Поэтому было очень легко исправить это в чрезмерном методе «init».
Надеюсь, это поможет.
Просто, чтобы рассказать о других ответах здесь. Я объединил некоторый код 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 Subviews
В качестве альтернативы просто создайте расширение для 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
Да, префиксом с 'is_grater__or_equal_than (9.0)' или он будет врезаться в более низких версиях –
@Dheeraj - как бы это должно быть сделано в коде Xamarin.iOS C#? Внутри этой структуры InputAssistanceItem, по-видимому, доступен только для чтения (http://stackoverflow.com/questions/37442203/xamarin-ios-remove-shortcut-bar-from-picker) – jbyrd
Пожалуйста, скажите мне, где нам нужно использовать это 3 строки – Balu