Я хочу получить UITextInputMode в Swift 2, но UITextInputMode.activeInputModes()
сбоев.UITextInputMode.activeInputModes() сбоев в Swift 2
let x = UITextInputMode.activeInputModes() // crash here
for t in x {
print(t)
}
Я хочу получить UITextInputMode в Swift 2, но UITextInputMode.activeInputModes()
сбоев.UITextInputMode.activeInputModes() сбоев в Swift 2
let x = UITextInputMode.activeInputModes() // crash here
for t in x {
print(t)
}
Это ошибка в Xcode 7, как указано HERE. Который говорит:
Резюме:
До Xcode 7 GM,
UITextInputMode.activeInputModes()
вернулся массив изUITextInputMode
экземпляров. Однако в Xcode 7 GM сигнатура метода в файле заголовка и документации указывает, что он возвращает массив строк, что неверно. В результате код , который используетactiveInputModes
, корректно не компилируется, а пытается использоватьactiveInputModes
на игровой площадке. Исключение составляет .
Я смог обойти эту ошибку, используя мост Objective-C.
Bridge.h
#ifndef Bridge_h
#define Bridge_h
#import "Kludge.h"
#endif
Kludge.h
#ifndef Kludge_h
#define Kludge_h
#import <UIKit/UITextInput.h>
@interface Kludge : NSObject
+ (NSArray<UITextInputMode *> *)activeInputModes;
@end
#endif
Kludge.m
#import "Kludge.h"
@implementation Kludge
+ (NSArray<UITextInputMode *> *)activeInputModes {
return (NSArray<UITextInputMode *> *)[UITextInputMode activeInputModes];
}
@end
От Swift, теперь вы можете позвонить Kludge.activeInputModes() и получить правильный Результаты.
Это действительно хорошая идея. Я пробую это и прекрасно работаю. Не могли бы вы также увидеть мой другой вопрос [как определить, использует ли приложение не системную IME-клавиатуру в быстром режиме) (http://stackoverflow.com/questions/32706996/how-to-detect-if-app-use-not-system- ime-keyboard-in-swift) – aotian16
Спасибо !!!!!!!!!! – Luda
Довольно умный. Надежда яблоко будет исправлять это как можно скорее. –
Аварийный журнал был бы полезен здесь – glyuck
@ glyuck да, но выхода журнала нет. – aotian16