UITextInputMode.activeInputModes() crashes in Swift 2

后端 未结 2 697
生来不讨喜
生来不讨喜 2021-01-19 09:28

I want to get UITextInputMode in Swift 2 but UITextInputMode.activeInputModes() crashes.

    let x = UITextInputMode.activeInputModes() // crash         


        
相关标签:
2条回答
  • 2021-01-19 09:53

    I was able to work around this bug by using an Objective-C bridge.

    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
    

    From Swift, you can now call Kludge.activeInputModes() and get the correct results.

    0 讨论(0)
  • 2021-01-19 10:00

    It is a bug in Xcode 7 as mentioned HERE. Which says:

    Summary:

    Prior to the Xcode 7 GM, UITextInputMode.activeInputModes() returned an array of UITextInputMode instances. However, in the Xcode 7 GM, the method signature in the header file and documentation states that it returns an array of Strings, which is incorrect. As a result, code that uses activeInputModes correctly no longer compiles, and attempting to use activeInputModes in a Playground throws an exception.

    0 讨论(0)
提交回复
热议问题