최대 1 분 소요

아이폰(iOS)에서 인증번호를 자동입력? 할 때, 아래 이미지처럼 빨간색 네모를 터치 시에 앱이 크래쉬 나는 현상이 있습니다.

이 부분은 최신 버전에서는 패치가 된 것으로 알고 있습니다.

하지만, 특정 버전에서는 여전히 발생하는 문제이기 때문에 아래와 같은 소스로 해당 문제를 해결할 수 있습니다.

소스를 보시죠.

extension NSString {

    class func swizzleReplacingCharacters() {
        let originalMethod = class_getInstanceMethod(NSString.self, #selector(NSString.replacingCharacters(in:with:)))
        let swizzledMethod = class_getInstanceMethod(NSString.self, #selector(NSString.swizzledReplacingCharacters(in:with:)))

        guard let original = originalMethod, let swizzled = swizzledMethod else {
            return
        }

        method_exchangeImplementations(original, swizzled)
    }

    @objc
    func swizzledReplacingCharacters(in range: NSRange, with replacement: String) -> String {
        return self.swizzledReplacingCharacters(in: range, with: replacement)
    }
}

위와 같이 swizzle 관련 extension 을 구현 후, AppDelegate 의 application 등의 적절한 위치에서 호출을 하여 줍니다.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
  NSString.swizzleReplacingCharacters()
  return true
}

댓글남기기