我想在Swift 2中獲得UITextInputMode,但UITextInputMode.activeInputModes()
崩潰。UITextInputMode.activeInputModes()在Swift 2中崩潰
let x = UITextInputMode.activeInputModes() // crash here
for t in x {
print(t)
}
我想在Swift 2中獲得UITextInputMode,但UITextInputMode.activeInputModes()
崩潰。UITextInputMode.activeInputModes()在Swift 2中崩潰
let x = UITextInputMode.activeInputModes() // crash here
for t in x {
print(t)
}
這是Xcode 7中的一個bug,如HERE所述。這表示:
總結:
此前的Xcode 7 GM,
UITextInputMode.activeInputModes()
返回UITextInputMode
實例的數組。但是,在Xcode 7 GM中,頭文件和文檔中的方法簽名 指出它返回一個字符串數組,它不正確。因此,使用activeInputModes
的代碼 正確地不再編譯,並且 嘗試在Playground中使用activeInputModes
會引發 異常。
我能夠通過使用Objective-C橋來解決這個bug。
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
從斯威夫特,你現在可以調用Kludge.activeInputModes(),並得到正確的結果。
碰撞日誌將在這裏有用 – glyuck
@ glyuck是的,但沒有日誌輸出。 – aotian16