Po aktualizacji do Xcode 11.2 z Xcode 11.1 aplikacja ulega awarii z powodu _UITextLayoutView

351

Po aktualizacji do Xcode 11.2 z Xcode 11.1 moja aplikacja ulega awarii:

*** Zakończenie aplikacji z powodu nieprzechwyconego wyjątku „NSInvalidUnarchiveOperationException”, powód: „Nie można utworzyć instancji klasy o nazwie _UITextLayoutView, ponieważ nie znaleziono klasy o nazwie _UITextLayoutView; klasa musi być zdefiniowana w kodzie źródłowym lub połączona z biblioteki (upewnij się, że klasa jest częścią poprawnego celu) ”

Dlaczego to się dzieje? Jak mogę zapobiec tej awarii?

Sudhakar Tharigoppula
źródło
17
Wygląda na błąd Xcode 11.2. Sprawdź wątek forums.developer.apple.com/thread/125287 . Najprawdopodobniej jest to związane z TextViews w hierarchii
Pavel Stepanov
3
@DanielStorm niestety nie pomogło. Właśnie dodałem zwykły UITextView do jednego ekranu, który wcześniej go nie miał (i wcześniej też się nie zawiesił :)). Teraz ulega awarii z tym samym błędem. Problem nie ustępuje dla wszystkich urządzeń / symulatorów, z wyjątkiem najnowszego iOS 13.2
Pavel Stepanov
3
Czy ktoś wie, czy spowoduje to awarię aplikacji produkcyjnych opartych na Xcode 11.2 podczas uruchamiania na urządzeniach z systemem iOS 13.1.2?
gfpacheco
2
to jest doskonale dobre pytanie, stąd 198 głosów, więc naprawdę nie jestem pewien, dlaczego ktoś oznaczył to jako „zawieszone niejasne”
Mike Volmar
4
@MikeVolmar Głosowałem za zamknięciem i nie ma już znaczenia. Naprawiono to za pomocą 11.2.1. To pytanie miało bardzo krótkie okno przydatności.
rmaddy

Odpowiedzi:

145

Gratulacje

Nowa wersja Xcode (11.2.1) jest już dostępna, co jest najlepszym sposobem na pozbycie się tego problemu.

Obejścia

@Mojtaba Hosseini rozwiązanie, które zaproponowałem, pochodziło z pomocy i udziału moich kolegów programistów nad StackOverflow. Ty, ja i cała reszta programisty tutaj już wiesz, że kiedy nowa wersja zostanie ogłoszona przez Apple, ten problem zniknie.

Ale oprócz wszystkiego

Powyższe rozwiązanie zostało zdecydowanie zaakceptowane przez Apple Review, ponieważ w ogóle nie jest zaangażowany prywatny interfejs API. To podejście jest bardzo podobne do tworzenia właściwości typu

@ interfejs UITextView (układ)

Lub

UITextView + Layout.h

Więc kiedy tworzysz własność, bezpośrednio używasz APPLE Private Components i ponownie modulujesz je według własnego uznania lub wymagań.

Prostym przykładem są klasy AMFNetworking

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

Mam nadzieję, że skończyłem z zarzutem

Poniższa odpowiedź była tylko pomocą mojej strony, aby umożliwić programistom kontynuowanie rozwoju, ponieważ początkowo proponowaliśmy programistom wycofanie Xcode. Ponowne pobranie 8 GB Xcode było złą praktyką, ponieważ wszyscy wiemy, że nowa wersja Xcode zostanie wkrótce wydana.

Chociaż jest to naprawione w Xcode 11.2.1, mam jedno rozwiązanie dla Xcode 11.2, dzięki któremu można pozbyć się tej awarii:

*** Zakończenie aplikacji z powodu nieprzechwyconego wyjątku „NSInvalidUnarchiveOperationException”, powód: „Nie można utworzyć instancji klasy o nazwie _UITextLayoutView, ponieważ nie znaleziono klasy o nazwie _UITextLayoutView; klasa musi być zdefiniowana w kodzie źródłowym lub połączona z biblioteki (upewnij się, że klasa jest częścią poprawnego celu) ”

ROZWIĄZANIE

Przejdź do wyszukiwania „Ustawienia kompilacji” dla „DEAD_CODE_STRIPPING” i ustaw na NIE

DEAD_CODE_STRIPPING = NO

Następnie

utwórz pliki 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

uruchom go w aplikacji delegata

#import "UITextViewWorkaround.h"

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

            [UITextViewWorkaround executeWorkaround];
    return yes;
    }

Skompiluj kod, a będziesz mieć działającą aplikację :)

aftab muhammed khan
źródło
2
Jeśli to działa dla ciebie uprzejmie awansuj, aby inni mogli również spróbować tego rozwiązania
aftab muhammed khan
3
@Hardy_Germany Przetestowałem to trochę, dla Swift możesz wypróbować: class UITextViewWorkaround: NSObject {class func executeWorkaround () {if #available (iOS 13.2, *) {} else {let className = "_UITextLayoutView" var cls = objc_getClass (className ) if cls == zero {cls = objc_allocateClassPair (UIView.self, className, 0) objc_registerClassPair (cls as! AnyClass) #if DEBUG drukuj ("dodano% @ dynamicznie \ n", nazwa_klasy); #endif}}}}
John Nimis,
2
@DaveDude DEAD_CODE_STRIPPING = NIE jest potrzebne, jeśli używasz Swift Package Manager z Xcode 11.2
Cur
5
@pradipsutariya tak oczywiście, dlaczego nigdy nie zmienimy niczego w APPLE CLASSES.
aftab muhammed khan
5
Wydano tylko Xcode 11.2.1 GM seed (beta). Wersja stabilna może wkrótce zostać wydana.
Lal Krishna
221

Aktualizacja: Naprawiono! 🎉🎊

JEDYNYM rozwiązaniem jest aktualizacja

Ten błąd został naprawiony w Xcode 11.2.1. Możesz więc pobrać i używać go stąd.

Scenorysy zawierające UITextView nie powodują już awarii aplikacji w wersjach systemu operacyjnego starszych niż iOS 13.2, tvOS 13.2 lub macOS 10.15.2. (56808566, 56873523)


Xcode 11.2 jest przestarzały przez Apple 5 listopada 2019 r

jeśli kiedykolwiek spróbujesz przesłać aplikację zbudowaną przy użyciu Xcode 11.2 do AppStore, zostaniesz odrzucony:

Ostrzeżenie o działaniu aplikacji App Store

OSTRZEŻENIE ITMS-90703 : „Przestarzała kompilacja Xcode. Z powodu rozwiązanych problemów z archiwizacją aplikacji wycofaliśmy Xcode 11.2 5 listopada 2019 r. Pobierz Xcode 11.2.1 lub nowszy, przebuduj aplikację i prześlij ponownie.”

Dlatego wszystkie obejścia wykonane za pomocą Xcode 11.2 są bezużyteczne


Jest to błąd dla Xcode 11.2 i naprawiony w Xcode 11.2.1.

Rozwiązania)

Cofnij do poprzedniej wersji Xcode z: Cofanie nie jest już opcją, a AppStore odrzuci każdą kompilację z Xcode poniżej 11.2.1 spójrz na to

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

Pamiętaj, że powinieneś użyć Safari, aby go pobrać i musisz najpierw zalogować się do portalu programistów Apple .

Możesz znaleźć wszystkie inne wersje Xcode i inne zasoby (w tym wersje i wersje beta) tutaj na https://developer.apple.com/download/more

Obejście

Jest to bardzo trudne, ale działające obejście. Zamień wszystkie UITextVieww scenorysach i Xibach na czystą wersję kodu .


Pamiętaj, że ten błąd został znaleziony i naprawiony przez Apple

Naprawiony

Również wcześniej błąd został potwierdzony przez Apple Staff edford

Potwierdzenie


Dla osób z iOS 13.2 i nie mogących już używać Xcode 11.1:

  1. Zaktualizuj system macOS do wersji 10.15.1 lub nowszej
  2. Zainstaluj Xcode 11.2.1 lub nowszy
  3. Powinno działać teraz na zaktualizowanym urządzeniu.

Dla osób z storyboardem:

  1. Podklasa UITextView
  2. Przypisz to wszystkim UITextView obiektów
  3. Nie zapomnij zaktualizować żadnych zmian właściwości, które mogą utracić w podklasie.

Dla tych, którzy lubią metody swizzling (Objc i zachowanie dynamiczne)

Udaj się do odpowiedzi @aftab muhammed khan dla Objective-C i @MikRo dla Swift w wersji dostosowanej

Po prostu nie rób tego więcej:

Nawet jeśli te dwa ostatnie obejścia nie używają prywatnego API Apple , zostaną odrzucone w AppStore, ponieważ Apple nie zaakceptuje kompilacji z wersjami Xcode w wersji 11.2.1 !

I znowu:

Xcode 11.2 jest przestarzały przez Apple 5 listopada 2019 r

Mojtaba Hosseini
źródło
3
Przykro mi, ale rozwiązanie działa dla mnie. Dzięki! 11.1 działa. Nie sugerowałbym konwersji na czysty kod, ponieważ założę się, że wkrótce pojawi się poprawka. Jeśli nie masz nic przeciwko: zaktualizuj tę odpowiedź, gdy pojawi się nowa wersja, która działa. Byłoby źle, gdyby ludzie zaczęli pobierać wydarzenie 11.1, chociaż istnieje tam naprawiona wersja :)
Sebastian Weiß
2
Mam już 11.1, ale nie działało, nie uaktualniłem do 11.2.
JAHelia,
6
Należy pamiętać, że prawdopodobnie powinieneś usunąć aplikację z urządzenia programistycznego i / lub wyczyścić folder kompilacji Xcode ( CMD + Shift + K)
JeroenJK
3
Jak mogę zaktualizować do wersji 11.2.1? Aplikacja nie wyświetla się w App Store. A pobieranie materiału siewnego GM z portalu dla programistów próbuje pobrać aplikację na około 8 GB!
mesqueeb
3
Również jeśli jest przestarzałe, dlaczego Apple nie usuwa na razie 11.2 z App Store?
Malcolm Salvador,
40

Problem został rozwiązany w Xcode 11.2.1.

EDYCJA: Ponieważ poprawka została już wydana, powinieneś przełączyć się na tę wersję Xcode i skomentować to obejście. Jak wspomniał Mojtaba Hosseini w swojej odpowiedzi:

... te dwa ostatnie obejścia wykorzystują prywatny interfejs API Apple i zostaną odrzucone z recenzji Apple!

Do czasu opublikowania poprawki przez Apple było to dobre obejście dla dalszego rozwoju i testowania.


Dla Xcode 11.2, w oparciu o ideę Aftaba Muhammeda Khana i przy pomocy Johna Nimisa właśnie przetestowałem następujący kod.

Nie trzeba zmieniać plików scenorysu!

Zmodyfikowałem mój plik AppDelegate.swift i dodałem tę klasę

//******************************************************************
// 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
           }
        }
    }
}

oraz w zaproszeniu delegata „didFinishLaunchingWithOptions” wywołaj obejście

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()
}
Hardy_Niemcy
źródło
34

Zaadaptowałem rozwiązanie Obj-C Khana do 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!)
            }
        }
    }

}

Nazwijmy to w końcu didFinishLaunchingWithOptionsw AppDelegate.

Dzięki @Aftab!

MikRo
źródło
gdzie musimy dodać ten kod? W plikach delegowanych?
SIDHARTH PU
@SIDHARTHPU możesz to nazwaćdidFinishLaunchingWithOptions
Lal Krishna
wypróbowałeś różne poprawki tego problemu, a ten działał tak długo, aż Xcode 11.3 ?! Dzięki!
FlimFlam Vir
1
To najbardziej krótkie i genialne rozwiązanie!
sVd,
1
@LalKrishna Utwórz nowy plik o nazwie UITextViewWorkaround.swift i dodaj do niego powyższy kod. Następnie dodaj UITextViewWorkaround.executeWorkaround () to do didFinishLaunchingWithOptions przed instrukcją return.
ashishn
22

Szybsza poprawka:

///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)
        }
    }
}

Dodaj gdzieś ten kod, a następnie zastąp wszystkie wystąpienia scenorysu FixedTextView .

Uwaga: stracisz wszystkie atrybuty utworzone w scenopisach. Może to mieć poważne konsekwencje (np. Ustawienie delegata, rozmiar itp.)

garafajon
źródło
To wydaje się być dobrym krokiem w kierunku obejścia tego problemu, ale nie jest jeszcze rozwiązaniem ...
Fattie,
18

Zaktualizowane rozwiązanie: aktualizacja do Xcode 11.2.1 . Dla mnie działa na urządzeniach iOS 11, 12 lub 13.

Zapoznaj się z dokumentacją firmy Apple Ta aktualizacja rozwiązuje problem krytyczny, który może powodować awarię aplikacji korzystających z UITextView.

Stare rozwiązanie: Pobrano Xcode 11.1 z https://developer.apple.com/download/more/ Powrót z wersji 11.2 na 11.1 naprawił awarię.

Również dla mnie, nawet z Xcode 11.2, kiedy uaktualniłem iPhone'a do 13.2, to naprawiło awarię.

anoo_radha
źródło
2
Jest to najłatwiejsza poprawka - uaktualnij iPhone'a iOS do 13.2
Reefwing
6
Aktualizacja iOS oczywiście nie jest poprawką, biorąc pod uwagę, że OP mówi z perspektywy programisty.
keeshux,
2
Apple potwierdziło, że błąd występuje w wersjach iOS starszych niż 13.2 i Xcode 11.2.
Chuck Krutsinger
Obniżono kod XCode do wersji 11.1 (11A1027) - nadal występują takie same awarie (
rommex,
jeśli zaktualizujesz lub obniżysz wersję i nadal powoduje awarię, wyczyść folder kompilacji Xcode (CMD + Shift + K) zgodnie z komentarzem Wojtecka, co naprawiło to dla mnie przy aktualizacji
Mike Volmar
17

11.2.1 Nasiona GM rozwiązują ten problem

(i można go użyć do opublikowania w App Store)

Przejdź na https://developer.apple.com/download/ . Pobierz Xcode 11.2.1 GM seed

Informacje o wersji potwierdzają, że naprawia ten błąd:

wprowadź opis zdjęcia tutaj

rzemiosło
źródło
5
Należy pamiętać, że po zainstalowaniu Xcode 11.2.1 GM seed prawdopodobnie powinieneś usunąć aplikację z urządzenia programistycznego i / lub wyczyścić folder kompilacji Xcode (CMD + Shift + K).
Wojtek Dmyszewicz
13

Możesz pobrać ostatnią wersję beta Xcode (11.2.1 GM) ze strony internetowej programistów Apple.

Tutaj bezpośredni link

Xcode 11.2.1 Nasiona GM

BossOz
źródło
Należy pamiętać, że po zainstalowaniu Xcode 11.2.1 GM seed prawdopodobnie powinieneś usunąć aplikację z urządzenia programistycznego i / lub wyczyścić folder kompilacji Xcode (CMD + Shift + K).
Wojtek Dmyszewicz
zainstalowane i uruchomione bez żadnych innych procedur. Problem naprawiony ✌️
BossOz
jak to zainstalować? Dał mi folder, ale nie ma pliku wykonywalnego
Scobee
1
po prostu pobierz zip z podanego linku i rozpakuj go. Następnie skopiuj aplikację do folderu aplikacji.
BossOz
1
Problem polega na tym, że kiedy go rozpakuję, otrzymuję dwa pliki, Treść i Metadane ... dlatego zapytałem, co z nimi zrobić. Użyłem narzędzia do archiwizacji, ponieważ normalne kliknięcie nie powiodło się. Spróbuję ponownie
Scobee
12

Poprawa odpowiedzi @garafajon. Dla mnie to działa w większości przypadków.

///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)
        }
    }
}
Awsom3D
źródło
1
Działa świetnie. Kod @ garafajon powodował problemy ze skrzynkami w nieoczekiwanych miejscach. To rozwiązuje te problemy ~ świetna robota!
ekrenzin
8

Jako „szybką” poprawkę możesz dodać UITextViewbezpośrednio z kodu, a nie przez IB. Przynajmniej mi się udało. Chociaż z mojego punktu widzenia lepiej jest przywrócić poprzedni Xcode / poczekać na nowy.

Pavel Stepanov
źródło
6

Jest to błąd związany z Xcode 11.2. Podklasy Textviews ulegają awarii na wszystkich urządzeniach, na których nie zainstalowano nowej wersji iOS (13.2). Prawdopodobnie lepiej nie budować wersji z tą wersją.

Możesz teraz:

  • obniż Xcode na 11.1 lub
  • zaktualizuj urządzenie do iOS 13.2
mark.so.cgn
źródło
1
Czy ten błąd dotyczy tylko widoków tekstów podklas?
Darren,
1
Aktualizacja iOS podczas aktualizacji Xcode rozwiązuje problem.
Buyin Brian,
2
Pytanie brzmi, czy awaria nastąpi w wydanej aplikacji z każdym iOS mniejszym niż 13,2 ... Boję się spróbować ...
mark.so.cgn
6

Użyłem udanego obejścia, ale było to bolesne. Oto proces, który śledziłem:

  1. Otwórz XIB w edytorze tekstu
  2. Znajdź przestępcę TextView. W moim przypadku:
<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. Zwróć uwagę na id(w moim przypadku:id="782-j1-88c" :)
  2. Zastąp klasę, jak wspomniano w odpowiedziach powyżej, i ponownie utwórz opcje (moja jest Cel C, przepraszam):
@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. Zwróć uwagę na ograniczenia, które zawierają identyfikator widoku tekstowego, i odtwórz te ograniczenia względem innych identyfikatorów elementów w widoku lub kontrolerze widoku. W moim przypadku:
- (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;
}

W ten sposób naprawiłem problem bez utraty pożądanej funkcjonalności. Na szczęście miałem tylko jednego UITextViewdo wymiany. W przeciwnym razie staje się to nie do utrzymania.

Eric Lange
źródło
2

Miałem ten sam problem, który właśnie zaktualizowałem Xcode 11.2 do 11.2.1, który działał dobrze.

Po aktualizacji przetestowałem to samo na iOS 13 i iOS 12 i działało dobrze.

Mohammad Parvez
źródło
Duplikat odpowiedzi BossOz.
Cœur
0

1. Problem:

Występuje problem z Xcode 11.2, w którym Storyboardy zawierające UITextView powodują awarię aplikacji w wersjach systemu wcześniejszych niż iOS 13.2, jeśli zostaną skompilowane z Xcode 11.2.

Xcode 11.2

Sprawdź tę dokumentację Apple .

2. Rozwiązanie:

Jedynym rozwiązaniem jest aktualizacja Xcode do wersji 11.2.1 lub 11.3.

Xcode 11.2.1 został wydany szczególnie w celu rozwiązania tego problemu z awarią.

wprowadź opis zdjęcia tutaj Sprawdź tę dokumentację Apple.

3. Sugestia:

Sugeruję skorzystanie z najnowszej wersji Xcode 11.3, ponieważ obsługuje on tworzenie aplikacji na iOS 13.3, a także istnieje wiele nowych funkcji. Sprawdź tę dokumentację Apple .

Jayprakash Dubey
źródło
-1

Ten problem został rozwiązany w wersji Xcode 11.2.1 i wywołany w uwagach do wydania:

Ta aktualizacja rozwiązuje problem krytyczny, który może powodować awarie aplikacji korzystających z UITextView

Zrzut ekranu z informacjami o wersji Xcode

pkamb
źródło