Sau khi nâng cấp lên Xcode 11.2 từ Xcode 11.1, ứng dụng gặp sự cố do _UITextLayoutView


351

Sau khi nâng cấp lên Xcode 11.2 từ Xcode 11.1, ứng dụng của tôi gặp sự cố:

*** Chấm dứt ứng dụng do ngoại lệ chưa được phát hiện 'NSInvalidUnarchiveOperationException', lý do: 'Không thể khởi tạo lớp có tên _UITextLayoutView vì không tìm thấy lớp nào có tên _UITextLayoutView; lớp cần được xác định trong mã nguồn hoặc được liên kết từ thư viện (đảm bảo lớp là một phần của mục tiêu chính xác) '

Tại sao chuyện này đang xảy ra? Làm thế nào tôi có thể ngăn chặn sự cố này?


17
Có vẻ như lỗi Xcode 11.2. Kiểm tra chủ đề forum.developer.apple.com/thread/125287 . Rất có thể nó có liên quan đến TextViews trong hệ thống phân cấp
Pavel Stepanov

3
Thật không may @DanielStorm, điều đó không giúp được gì. Tôi vừa mới thêm một UITextView đơn giản vào một màn hình mà trước đây không có nó (và cũng không bị sập :)). Bây giờ nó gặp sự cố với cùng một lỗi. Vấn đề vẫn tồn tại đối với tất cả các thiết bị / trình giả lập ngoại trừ iOS 13.2 mới nhất
Pavel Stepanov

3
Có ai biết điều này sẽ làm sập các ứng dụng sản xuất được xây dựng với Xcode 11.2 khi chạy trên thiết bị iOS 13.1.2 không?
gfpacheco

2
Đây là một câu hỏi hoàn toàn tốt, do đó có 198 phiếu bầu, vì vậy tôi thực sự không chắc tại sao ai đó đánh dấu nó là "giữ không rõ ràng"
Mike Volmar

4
@MikeVolmar Tôi đã bỏ phiếu để đóng và không còn phù hợp. Nó được sửa với 11.2.1. Câu hỏi này có một cửa sổ rất hữu ích.
rmaddy

Câu trả lời:


145

Chúc mừng

Phiên bản mới của Xcode (11.2.1) hiện đã có sẵn, đây là cách tốt nhất để thoát khỏi vấn đề này.

Cách giải quyết

@Mojtaba Hosseini giải pháp tôi đề xuất là từ sự giúp đỡ và sự tham gia từ phía tôi đến các nhà phát triển đồng nghiệp của tôi trên StackOverflow. Bạn, tôi và tất cả các nhà phát triển còn lại ở đây đã biết rằng khi phiên bản mới được Apple công bố, vấn đề này sẽ không còn nữa.

Nhưng bên cạnh tất cả mọi thứ

Giải pháp đã nói ở trên chắc chắn được Apple Review chấp nhận vì không có API riêng nào liên quan. Cách tiếp cận này rất giống với thuộc tính tạo

@interface UITextView (Bố cục)

Hoặc là

UITextView + Layout.h

Vì vậy, khi bạn đang tạo tài sản, bạn đang trực tiếp sử dụng các thành phần riêng của APPLE và điều chỉnh lại chúng theo bạn tùy thuộc hoặc yêu cầu.

Ví dụ đơn giản là các lớp AMFNetworking

- (void)setImageWithURL:(NSURL *)url {
    [self setImageWithURL:url placeholderImage:nil];
}

Hy vọng tôi được thực hiện với Cáo buộc

Câu trả lời dưới đây chỉ là một số trợ giúp từ phía tôi để cho phép nhà phát triển tiếp tục phát triển khi ban đầu chúng tôi đề xuất nhà phát triển quay lại Xcode. Đây là một thực tế tồi tệ để tải xuống lại 8 GB Xcode vì tất cả chúng ta đều biết rằng phiên bản Xcode mới sẽ sớm được phát hành.

Trong khi nó được sửa trong Xcode 11.2.1, tôi đã có một giải pháp cho Xcode 11.2 mà bạn có thể thoát khỏi sự cố này:

*** Chấm dứt ứng dụng do ngoại lệ chưa được phát hiện 'NSInvalidUnarchiveOperationException', lý do: 'Không thể khởi tạo lớp có tên _UITextLayoutView vì không tìm thấy lớp nào có tên _UITextLayoutView; lớp cần được xác định trong mã nguồn hoặc được liên kết từ thư viện (đảm bảo lớp là một phần của mục tiêu chính xác) '

GIẢI PHÁP

Chuyển đến tìm kiếm Cài đặt bản dựng cho "DEAD_CODE_STR Picks" và đặt thành KHÔNG

DEAD_CODE_STRIPPING = NO

Sau đó

tạo tập tin 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

thực hiện nó trong đại biểu ứng dụng

#import "UITextViewWorkaround.h"

        - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
            // Override point for customization after application launch.

            [UITextViewWorkaround executeWorkaround];
    return yes;
    }

Biên dịch mã và bạn sẽ có một ứng dụng đang chạy :)


2
Nếu nó hoạt động cho bạn, vui lòng xếp hạng để người khác có thể thử giải pháp này
aftab muhammed khan

3
@Hardy_Germany Tôi đã thử nghiệm điều này một chút, đối với Swift, bạn có thể thử: class UITextViewWorkaround: NSObject {class func execWorkaround () {if #av Available (iOS 13.2, *) {} khác {let className = "_UITextLayout ) if cls == nil {cls = objc_allocateClassPair (UIView.elf, className, 0) objc_registerClassPair (cls as! AnyClass) #if DEBUG print ("thêm% @ động #endif}}}}
John Nimis

2
@DaveDude DEAD_CODE_STRIPPING = NO là cần thiết nếu bạn sử dụng Swift Package Manager với Xcode 11,2
Cœur

5
@pradipsutariya có ngoài khóa học tại sao chúng ta không bao giờ thay đổi bất cứ điều gì trong LỚP APPLE.
aftab muhammed khan

5
Chỉ hạt giống Xcode 11.2.1 GM (beta) được phát hành. Phiên bản ổn định có thể phát hành sớm.
Lal Krishna

221

Cập nhật: Đã sửa! 🎉🎊

Giải pháp DUY NHẤT là cập nhật

Đây lỗi được cố định trong Xcode 11.2.1. Vì vậy, bạn có thể tải về và sử dụng nó từ đây.

Bảng phân cảnh chứa UITextView sẽ không còn khiến ứng dụng bị sập trên các phiên bản hệ điều hành sớm hơn iOS 13.2, tvOS 13.2 hoặc macOS 10.15.2. (56808566, 56873523)


Xcode 11.2 không được Apple phản đối vào ngày 5 tháng 11 năm 2019

nếu bạn từng cố gắng gửi ứng dụng được xây dựng bằng Xcode 11.2 đến AppStore, bạn sẽ bị từ chối:

Cảnh báo hoạt động của App Store Connect

CẢNH BÁO ITMS-90703 : "Xây dựng Xcode không dùng nữa. Do các sự cố lưu trữ ứng dụng đã được giải quyết, chúng tôi đã phản đối Xcode 11.2 vào ngày 5 tháng 11 năm 2019. Tải xuống Xcode 11.2.1 hoặc mới hơn, xây dựng lại ứng dụng của bạn và gửi lại."

Vì vậy, tất cả các cách giải quyết được thực hiện với Xcode 11.2 là vô ích


Đó là lỗi của Xcode 11.2 và được sửa trong Xcode 11.2.1.

Các giải pháp)

Cuộn lại Xcode trước phát hành phiên bản từ: Rollback không phải là một lựa chọn nữa và AppStore sẽ từ chối bất kỳ xây dựng với Xcode dưới 11.2.1 hãy xem này

https://developer.apple.com/service-account/doad?path=/Developer_Tools/Xcode_11.1/Xcode_11.1.xip

Lưu ý rằng bạn nên sử dụng Safari để tải xuống và trước tiên bạn phải đăng nhập vào cổng nhà phát triển của Apple .

Bạn có thể tìm thấy tất cả các phiên bản Xcode khác và liên kết tài nguyên khác (bao gồm cả phiên bản phát hành và phiên bản beta) tại https://developer.apple.com/doad/more

Cách giải quyết

Điều này là rất khó khăn nhưng làm việc giải quyết. Thay thế tất cả các UITextViews trong bảng phân cảnhXib s bằng phiên bản mã thuần túy .


Lưu ý rằng đây lỗi được tìm thấy và cố định bởi Apple

đã sửa

Cũng trước đó, lỗi đã được xác nhận bởi Apple Staff edford

Xác nhận


Đối với những người dùng iOS 13.2 và không thể sử dụng Xcode 11.1 nữa:

  1. Cập nhật macOS lên 10.15.1 trở lên
  2. Cài đặt Xcode 11.2.1 trở lên
  3. Nó sẽ hoạt động ngay trên thiết bị cập nhật.

Đối với những người có bảng phân cảnh:

  1. Phân lớp UITextView
  2. Gán nó cho tất cả UITextViewcác đối tượng
  3. Đừng quên cập nhật bất kỳ thay đổi thuộc tính nào có thể mất trong phân lớp.

Đối với những người thoải mái với phương pháp swizzling (Objc và hành vi năng động)

Đi đến câu trả lời @aftab muhammed khan cho câu trả lời Objective-C@MikRo cho phiên bản Swift được điều chỉnh

Đừng làm điều đó nữa:

Ngay cả khi hai cách giải quyết cuối cùng này không sử dụng API riêng của Apple , chúng sẽ bị từ chối trong AppStore vì Apple sẽ không chấp nhận các bản dựng với các phiên bản Xcode theo 11.2.1 !

Và một lần nữa:

Xcode 11.2 không được Apple phản đối vào ngày 5 tháng 11 năm 2019


3
Buồn, nhưng giải pháp đang làm việc cho tôi. Cảm ơn! 11.1 công trình. Tôi sẽ không đề xuất chuyển đổi sang mã thuần túy, vì tôi cá là sẽ có một bản sửa lỗi sắp ra mắt. Nếu bạn không phiền: Cập nhật câu trả lời này một khi có phiên bản mới hoạt động. Sẽ rất tệ nếu mọi người bắt đầu tải xuống sự kiện 11.1 mặc dù có một phiên bản cố định ngoài đó :)
Sebastian Weiß

2
Tôi đã có 11.1 nhưng không hoạt động, tôi đã không nâng cấp lên 11.2.
JAHelia

6
Xin lưu ý rằng có lẽ bạn nên xóa ứng dụng khỏi thiết bị phát triển của mình và / hoặc xóa thư mục bản dựng của Xcode ( CMD + Shift + K)
JeroenJK

3
Làm cách nào để nâng cấp lên v11.2.1? Nó không hiển thị trên cửa hàng ứng dụng. Và tải xuống hạt giống GM từ cổng thông tin dành cho nhà phát triển cố gắng tải xuống ứng dụng trên khoảng 8gb!
mesqueeb

3
Ngoài ra, nếu nó không dùng nữa, tại sao bây giờ táo không xóa 11.2 trên cửa hàng ứng dụng?
Malcolm Salvador

40

Sự cố đã được khắc phục trong Xcode 11.2.1.

EDIT: Hiện tại bản sửa lỗi đã được phát hành, bạn nên chuyển sang phiên bản Xcode đó và nhận xét cách khắc phục này. Như Mojtaba Hosseini trong câu trả lời của mình đã đề cập:

... Hai cách giải quyết cuối cùng này đang sử dụng API riêng của Apple và sẽ bị từ chối từ đánh giá của Apple!

Trong thời gian cho đến khi bản sửa lỗi được Apple phát hành, đây là một cách giải quyết tốt để tiếp tục phát triển và thử nghiệm.


Đối với Xcode 11.2, dựa trên ý tưởng của Aftab Muhammed Khan và với sự giúp đỡ của John Nimis, tôi chỉ thử nghiệm đoạn mã sau.

Không có thay đổi trong các tập tin bảng phân cảnh cần thiết!

Đã chỉnh sửa tệp AppDelegate.swift của tôi và thêm lớp này

//******************************************************************
// MARK: - Workaround for the Xcode 11.2 bug
//******************************************************************
class UITextViewWorkaround: NSObject {

    // --------------------------------------------------------------------
    // MARK: Singleton
    // --------------------------------------------------------------------
    // make it a singleton
    static let unique = UITextViewWorkaround()

    // --------------------------------------------------------------------
    // MARK: executeWorkaround()
    // --------------------------------------------------------------------
    func executeWorkaround() {

        if #available(iOS 13.2, *) {

            NSLog("UITextViewWorkaround.unique.executeWorkaround(): we are on iOS 13.2+ no need for a workaround")

        } else {

            // name of the missing class stub
            let className = "_UITextLayoutView"

            // try to get the class
            var cls = objc_getClass(className)

            // check if class is available
            if cls == nil {

                // it's not available, so create a replacement and register it
                cls = objc_allocateClassPair(UIView.self, className, 0)
                objc_registerClassPair(cls as! AnyClass)

                #if DEBUG
                NSLog("UITextViewWorkaround.unique.executeWorkaround(): added \(className) dynamically")
               #endif
           }
        }
    }
}

và trong cuộc gọi của đại biểu cho "didFinishLaunchingWithOptions" gọi cách giải quyết

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    // Override point for customization after application launch.

    // This is the workaround for Xcode 11.2
    UITextViewWorkaround.unique.executeWorkaround()
}

34

Tôi đã điều chỉnh giải pháp Obj-C của khan cho 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!)
            }
        }
    }

}

Gọi đó là vào cuối didFinishLaunchingWithOptionsnăm AppDelegate.

Cảm ơn @Aftab!


chúng ta cần thêm mã này vào đâu? Trong hồ sơ đại biểu?
SIDHARTH PU

@SIDHARTHPU bạn có thể gọi nó trongdidFinishLaunchingWithOptions
Lal Krishna

đã thử một loạt các bản sửa lỗi về vấn đề này và bản sửa lỗi này cho đến khi Xcode 11.3?! Cám ơn!
FlimFlam Vir

1
Đây là giải pháp ngắn và tuyệt vời nhất!
sVd

1
@LalKrishna Tạo tập tin mới có tên UITextViewWorkaround.swift và thêm mã ở trên vào nó. Sau đó thêm UITextViewWorkaround.executeWorkaround () này vào didFinishLaunchingWithOptions trước câu lệnh return.
ashishn

22

Cách khắc phục nhanh hơn:

///Substitute class for _UITextLayoutView bug
class FixedTextView: UITextView {
    required init?(coder: NSCoder) {
        if #available(iOS 13.2, *) {
            super.init(coder: coder)
        }
        else {
            let rect = CGRect(origin: .zero, size: CGSize(width: 100, height: 44*3))
            super.init(frame: rect, textContainer: nil)
        }
    }
}

Thêm mã này vào một nơi nào đó và sau đó thay thế tất cả các phiên bản bảng phân cảnh FixedTextView.

Lưu ý: bạn sẽ mất bất kỳ thuộc tính nào được tạo trong bảng phân cảnh. Điều này có thể có ý nghĩa nghiêm trọng (ví dụ: cài đặt đại biểu, kích thước, v.v.)


Đây có vẻ là một bước tốt để giải quyết, nhưng chưa hoàn toàn là một giải pháp ...
Fattie

18

Giải pháp cập nhật : Cập nhật lên Xcode 11.2.1 . Nó hoạt động trên các thiết bị iOS 11, 12 hoặc 13 đối với tôi.

Tham khảo tài liệu của apple Bản cập nhật này khắc phục sự cố nghiêm trọng có thể khiến các ứng dụng sử dụng UITextView bị sập.

Giải pháp cũ: Đã tải xuống Xcode 11.1 từ https://developer.apple.com/doad/more/ Chuyển đổi lại từ 11.2 sang 11.1 đã khắc phục sự cố.

Ngoài ra, đối với tôi ngay cả với Xcode 11.2, khi tôi nâng cấp iPhone lên 13.2, điều đó đã khắc phục sự cố.


2
Đây là cách khắc phục dễ dàng nhất - nâng cấp iPhone iOS lên 13.2
Reefwing

6
Nâng cấp iOS rõ ràng không phải là một sửa chữa cho thấy OP đang nói dưới góc độ nhà phát triển.
keeshux

2
Apple xác nhận rằng lỗi xảy ra với các phiên bản iOS trước ngày 13.2 và Xcode 11.2.
Chuck Krutsinger

XCode bị hạ cấp xuống Phiên bản 11.1 (11A1027) - vẫn gặp sự cố tương tự (
rommex

nếu bạn nâng cấp hoặc hạ cấp và nó vẫn bị sập sạch thư mục xây dựng của Xcode (CMD + Shift + K) theo nhận xét của Wojteck bên dưới, đã sửa lỗi này cho tôi khi nâng cấp
Mike Volmar

17

11.2.1 Hạt giống GM giải quyết vấn đề này

(và nó có thể được sử dụng để xuất bản lên App Store)

Truy cập https://developer.apple.com/doad/ . Tải xuống hạt giống Xcode 11.2.1 GM

Ghi chú phát hành xác nhận nó sửa lỗi này:

nhập mô tả hình ảnh ở đây


5
Xin lưu ý rằng sau khi cài đặt hạt giống GM Xcode 11.2.1, có lẽ bạn nên xóa ứng dụng khỏi thiết bị phát triển của mình và / hoặc xóa thư mục xây dựng của Xcode (CMD + Shift + K).
Wojtek Dmyszewicz

13

Bạn có thể tải xuống bản phát hành beta Xcode cuối cùng (11.2.1 GM) từ trang web của nhà phát triển Apple.

Đây là đường dẫn trực tiếp

Hạt giống mã hóa 11.2.1 GM


Xin lưu ý rằng sau khi cài đặt hạt giống GM Xcode 11.2.1, có lẽ bạn nên xóa ứng dụng khỏi thiết bị phát triển của mình và / hoặc xóa thư mục xây dựng của Xcode (CMD + Shift + K).
Wojtek Dmyszewicz

cài đặt và chạy mà không cần bất kỳ thủ tục nào khác Sự cố đã được khắc phục ✌️
BossOz

Làm thế nào để tôi cài đặt này? Nó đưa cho tôi một thư mục, nhưng không thể thực thi được
Scobee

1
chỉ cần tải về zip từ liên kết được cung cấp và giải nén nó. Sau đó sao chép ứng dụng trong thư mục Ứng dụng.
BossOz

1
vấn đề là khi tôi giải nén nó, tôi nhận được hai tệp, Nội dung và Siêu dữ liệu ... đó là lý do tại sao tôi hỏi phải làm gì với chúng. Tôi đã sử dụng một tiện ích lưu trữ bởi vì nhấp vào nó thường không thành công. Tôi sẽ thử lại
Scobee

12

Cải thiện câu trả lời @garafajon. Đối với tôi nó hoạt động trong hầu hết các trường hợp.

///Substitute class for _UITextLayoutView bug
class FixedTextView: UITextView {
    required init?(coder: NSCoder) {
        if #available(iOS 13.2, *) {
            super.init(coder: coder)
        }
        else {
            super.init(frame: .zero, textContainer: nil)
            self.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            self.contentMode = .scaleToFill

            self.isScrollEnabled = false   // causes expanding height

            // Auto Layout
            self.translatesAutoresizingMaskIntoConstraints = false
            self.font = UIFont(name: "HelveticaNeue", size: 18)
        }
    }
}

1
Hoạt động hoàn hảo. Mã của @ garafajon gây ra sự cố với các hộp ở những nơi không mong muốn. Điều này khắc phục những vấn đề đó ~ công việc tuyệt vời!
ekrenzin

8

Là một sửa chữa "nhanh chóng", bạn có thể thêm UITextViewtrực tiếp từ mã và không thông qua IB. Ít nhất nó đã làm việc cho tôi. Mặc dù theo quan điểm của tôi, tốt hơn hết là bạn nên quay lại Xcode trước đó / chờ đợi cái mới.


6

Đó là một lỗi với Xcode 11.2. Textview phân lớp đang gặp sự cố trên tất cả các thiết bị chưa cài đặt bản dựng iOS mới (13.2). Bạn có thể tốt hơn không xây dựng một bản phát hành với bản dựng đó.

Bây giờ bạn có thể:

  • hạ cấp Xcode xuống 11.1 hoặc
  • nâng cấp thiết bị của bạn lên iOS 13.2

1
Vì vậy, lỗi này chỉ ảnh hưởng đến chế độ xem văn bản được phân lớp?
Darren

1
Cập nhật iOS khi cập nhật Xcode giải quyết vấn đề.
Muain Brian

2
Câu hỏi là, nếu sự cố sẽ xảy ra trên một ứng dụng được phát hành với mọi iOS nhỏ hơn 13.2 ... Tôi sợ thử ...
mark.so.cgn

6

Tôi đã sử dụng một cách giải quyết thành công, nhưng nó rất đau đớn. Đây là quá trình mà tôi đã làm theo:

  1. Mở XIB trong trình soạn thảo văn bản
  2. Tìm sự xúc phạm TextView. Trong trường hợp của tôi:
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="782-j1-88c" customClass="LCAnsiConsoleTextView">
  <rect key="frame" x="16" y="20" width="343" height="589"/>
  <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
  <fontDescription key="fontDescription" name="Menlo-Regular" family="Menlo" pointSize="12"/>
  <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
  1. Lưu ý của nó id(trong trường hợp của tôi id="782-j1-88c":)
  2. Ghi đè lớp như đã lưu ý trong các câu trả lời ở trên và tạo lại các tùy chọn (của tôi là Objective-C, xin lỗi):
@implementation FixedTextView

- (id) initWithCoder:(NSCoder*)coder
{
    if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){13,2,0}])
        self = [super initWithCoder:coder];
    else {
        self = [super initWithFrame:CGRectMake(16, 3, 343, 605)];
        self.editable = YES;
        self.selectable = YES;
        self.insetsLayoutMarginsFromSafeArea = YES;
        self.clipsToBounds = YES;
        self.clearsContextBeforeDrawing = YES;
        self.autoresizesSubviews = YES;
        self.contentMode = UIViewContentModeScaleToFill;
        self.scrollEnabled = YES;
        self.userInteractionEnabled = YES;
        self.multipleTouchEnabled = YES;
        self.translatesAutoresizingMaskIntoConstraints = NO;
        self.font = [UIFont fontWithName:@"Menlo-Regular" size:12.0];
    }
    return self;
}
  1. Lưu ý các ràng buộc bao gồm id chế độ xem văn bản của bạn và tạo lại các ràng buộc đó đối với các id phần tử khác trong chế độ xem hoặc trình điều khiển chế độ xem của bạn. Trong trường hợp của tôi:
- (id) initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        [self xibSetup];
        [self initView];
/*
        <constraint firstItem="75C-lt-YtE" firstAttribute="top" secondItem="782-j1-88c" secondAttribute="bottom" constant="8" symbolic="YES" id="8SH-5l-FAs"/>
        <constraint firstItem="782-j1-88c" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leadingMargin" id="Mve-aZ-HCe"/>
        <constraint firstItem="782-j1-88c" firstAttribute="leading" secondItem="75C-lt-YtE" secondAttribute="leading" id="dPG-u3-cCi"/>
        <constraint firstItem="782-j1-88c" firstAttribute="trailing" secondItem="iN0-l3-epB" secondAttribute="trailingMargin" id="sjT-0Q-hNj"/>
        <constraint firstItem="782-j1-88c" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" id="vic-vZ-osR"/>
*/
        [self.command.topAnchor constraintEqualToAnchor:self.console.bottomAnchor constant:8].active = YES;
        [self.console.leadingAnchor constraintEqualToAnchor:self.layoutMarginsGuide.leadingAnchor].active = YES;
        [self.console.leadingAnchor constraintEqualToAnchor:self.command.leadingAnchor].active = YES;
        [self.console.trailingAnchor constraintEqualToAnchor:self.trailingAnchor].active = YES;
        [self.console.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.topAnchor].active = YES;

    }
    return self;
}

Làm điều này đã khắc phục vấn đề cho tôi mà không mất chức năng mong muốn. May mắn thay tôi chỉ có một UITextViewđể thay thế. Nếu không, điều này sẽ không thể bảo vệ.


2

Tôi gặp vấn đề tương tự Tôi vừa nâng cấp Xcode 11.2 của mình lên 11.2.1, nó hoạt động tốt.

Sau khi nâng cấp, tôi đã thử nghiệm tương tự trên iOs 13 và iOS 12 và nó vẫn hoạt động tốt.


Bản sao câu trả lời của BossOz.
Cœur

0

1. Vấn đề:

Có một vấn đề với Xcode 11.2 trong đó Storyboards chứa UITextView sẽ khiến ứng dụng bị sập trên các phiên bản HĐH sớm hơn iOS 13.2 nếu được biên dịch với Xcode 11.2.

Xcode 11.2

Kiểm tra tài liệu táo này .

2. Giải pháp:

Giải pháp duy nhất là cập nhật Xcode của bạn lên 11.2.1 hoặc 11.3.

Xcode 11.2.1 được phát hành đặc biệt để khắc phục sự cố sự cố này.

nhập mô tả hình ảnh ở đây Kiểm tra tài liệu táo này .

3. Gợi ý:

Tôi sẽ đề nghị bạn nên dùng phiên bản Xcode 11.3 mới nhất vì điều này hỗ trợ phát triển ứng dụng cho iOS 13.3 và cũng có nhiều tính năng mới. Kiểm tra tài liệu táo này .


-1

Sự cố này đã được khắc phục trong Xcode phiên bản 11.2.1 và được gọi ra trong ghi chú phát hành:

Bản cập nhật này khắc phục sự cố nghiêm trọng có thể khiến các ứng dụng sử dụng UITextView gặp sự cố

Ảnh chụp màn hình ghi chú phát hành Xcode

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.