Xcode 11 Xib _UITextLayoutView 崩溃

崩溃信息如下:

*** Terminating app due to uncaught exception 
'NSInvalidUnarchiveOperationException', 
reason: 'Could not instantiate class named _UITextLayoutView because no class named _UITextLayoutView was found; 
the class needs to be defined in source code or linked in from a library (ensure the class is part of the correct target)'

 

 

解决方案 一

xib的部分视图改用硬核手写,以避坑。
解决方案 二

下载其他版本Xcode 传送门
解决方案 三

OC 黑魔法 Runtime。

    创建 文件 UITextViewWorkaround

    UITextViewWorkaround.h

    #import <Foundation/Foundation.h>
     
    @interface UITextViewWorkaround : NSObject
    + (void)executeWorkaround; 
    @end
     

    UITextViewWorkaround.m

    #import "UITextViewWorkaround.h"
    #import  <objc/runtime.h>
     
     
     
    @implementation UITextViewWorkaround
     
    + (void)executeWorkaround {
        if (@available(iOS 13.2, *)) {
     
        }
        else {
            const char *className = "_UITextLayoutView";
            Class cls = objc_getClass(className);
            if (cls == nil) {
                cls = objc_allocateClassPair([UIView class], className, 0);
                objc_registerClassPair(cls);
    #if DEBUG
                printf("added %s dynamically\n", className);
    #endif
            }
        }
    }
     
    @end

    使用该静态方法

    #import "UITextViewWorkaround.h"
     
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
     
        [UITextViewWorkaround executeWorkaround];
        return yes;
    }

    swift 版本请客观收下:

    import UIKit
     
    @objc
    class UITextViewWorkaround : NSObject {
     
        static func executeWorkaround() {
            if #available(iOS 13.2, *) {
            } else {
                let className = "_UITextLayoutView"
                let theClass = objc_getClass(className)
                if theClass == nil {
                    let classPair: AnyClass? = objc_allocateClassPair(UIView.self, className, 0)
                    objc_registerClassPair(classPair!)
                }
            }
        }
     
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值