2015-09-21 1 views

ответ

5

Это ошибка в Xcode 7, как указано HERE. Который говорит:

Резюме:

До Xcode 7 GM, UITextInputMode.activeInputModes() вернулся массив из UITextInputMode экземпляров. Однако в Xcode 7 GM сигнатура метода в файле заголовка и документации указывает, что он возвращает массив строк, что неверно. В результате код , который использует activeInputModes, корректно не компилируется, а пытается использовать activeInputModes на игровой площадке. Исключение составляет .

+0

Спасибо за помощь! :) – aotian16

+0

С удовольствием помогите .. :) –

+0

К сожалению, это все еще сломано в Xcode 7.1/iOS 9.1. – rmaddy

10

Я смог обойти эту ошибку, используя мост 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() и получить правильный Результаты.

+0

Это действительно хорошая идея. Я пробую это и прекрасно работаю. Не могли бы вы также увидеть мой другой вопрос [как определить, использует ли приложение не системную IME-клавиатуру в быстром режиме) (http://stackoverflow.com/questions/32706996/how-to-detect-if-app-use-not-system- ime-keyboard-in-swift) – aotian16

+0

Спасибо !!!!!!!!!! – Luda

+0

Довольно умный. Надежда яблоко будет исправлять это как можно скорее. –