Mam pole tekstowe z ukrytą klawiaturą (ponieważ używam go z bluetooth). Jednak w iOS9 pojawia się pasek skrótów.Jak ukryć pasek skrótów w iOS9
Czy istnieje sposób, aby to ukryć?
Dziękuję bardzo!
Mam pole tekstowe z ukrytą klawiaturą (ponieważ używam go z bluetooth). Jednak w iOS9 pojawia się pasek skrótów.Jak ukryć pasek skrótów w iOS9
Czy istnieje sposób, aby to ukryć?
Dziękuję bardzo!
Możesz podać nazwę pola tekstowego zamiast userNameTextField, dla której chcesz usunąć pasek skrótów.
UITextInputAssistantItem* item = [userNameTextField inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
w Swift 2.0
if #available(iOS 9.0, *) {
let item : UITextInputAssistantItem = yourTextView.inputAssistantItem
item.leadingBarButtonGroups = []
item.trailingBarButtonGroups = []
} else {
// Fallback on earlier versions
}
Po prostu dla FYI, musisz wywołać to na każdym UITextView lub UITextField (w zasadzie wszystko, co pojawia się na klawiaturze), ponieważ każde pole wejściowe ma swój własny UITextInputAssistantItem. – TenaciousJay
miałem ten sam problem. I tak rozpoczyna się wyszukiwanie SO. Więc powyższe mi pomógł, ale cały „jeśli iOS9 rzeczą” może być najlepszy w ramce tak:
if ([self respondsToSelector:@selector(inputAssistantItem)]) {
// iOS9.
UITextInputAssistantItem* item = [self inputAssistantItem];
item.leadingBarButtonGroups = @[];
item.trailingBarButtonGroups = @[];
}
szczęśliwie, ja stworzył podklasę w UITextField (CHTextField) i był w używać wszędzie. Było to bardzo łatwe do naprawienia w nadpobudliwej metodzie "init".
Mam nadzieję, że to pomaga.
Po prostu, aby rozwinąć inne odpowiedzi tutaj. Zrobiłem kilka kodu Swift 2.0, który przejdzie przez wszystkie subviews danego widoku i wyłączy UITextInputAssistantItems dla wszystkich UITextFields i 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)
}
}
}
Możesz wtedy wywołać tę funkcję przechodząc w dowolnym widoku, od którego chcesz zacząć. Nazwałem to wewnątrz mojej metody ViewDidLoad()
i przekazałem w self.view
jak hideTheAssistantBar(self.view)
.
Rzeczywiście poszedłem o krok dalej w moich potrzebach i dodałem tę funkcję do klasy pomocnika używanej do wspólnego kodu. Dlatego wewnątrz mojej funkcji viewDidLoad()
po prostu nazywam się helper.hideTheAssistantBar(self.view)
, a następnie nie muszę umieszczać tej funkcji w każdym pliku.
Mamy nadzieję, że pomoże to komuś w znalezieniu prostego sposobu na usunięcie paska asystenta z wszystkich UITextFields i UISearchBars za jednym zamachem.
Dzięki @Arkader za szybki kod, aby rekurencyjnie znaleźć wszystkie subviews. Swift List Subviews
Alternatywnie, po prostu utwórz rozszerzenie dla UITextField w Swift 2.0 w ten sposób.
extension UITextField
{
public func hideAssistantBar()
{
if #available(iOS 9.0, *) {
let assistant = self.inputAssistantItem;
assistant.leadingBarButtonGroups = [];
assistant.trailingBarButtonGroups = [];
}
}
}
Następnie możesz po prostu wywołać hideAssistantBar() w dowolnym polu tekstowym, które lubisz.
@IBOutlet weak var myTextField: UITextField?;
override public func viewDidLoad() {
super.viewDidLoad();
myTextField?.hideAssistantbar();
}
Łatwym sposobem, aby to zrobić dla wszystkich pól tekstowych w aplikacji jest stworzenie kategorię na UITextInputAssistantItem
i zastępują pobierające dla leadingBarButtonGroups
i trailingBarButtonGroups
jak ten:
@implementation UITextInputAssistantItem (RemoveBars)
- (NSArray<UIBarButtonItemGroup *> *)leadingBarButtonGroups
{
return @[];
}
- (NSArray<UIBarButtonItemGroup *> *)trailingBarButtonGroups
{
return @[];
}
@end
ten pracował dla mnie na iOS 9.x i 8.x, nie ma potrzeby stosowania żadnego kodu warunkowego.
Bądź ostrożny z tym chociaż, zastępuje te właściwości WSZYSTKIEGO który używa UITextInputAssistantItem
Tak, z przedrostkiem 'is_grater__or_equal_than (9,0)' lub zawiesisz w niższych wersjach –
@Dheeraj - w jaki sposób należy to zrobić w kodzie Xamarin.iOS C#? W tym kontekście InputAssistanceItem wydaje się być tylko do odczytu (http://stackoverflow.com/questions/37442203/xamarin-ios-remove-shortcut-bar-from-picker) – jbyrd
Proszę, może ktoś mi powiedzieć, gdzie musimy użyć to 3 linie – Balu