Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer Grenzen enthält NaN: [0 nan; 280 524]'

Ich bin die Entwicklung einer Buch-app, wo Benutzer können die Schriftgröße ändern, auf die TextView.

wenn der Benutzer die Schriftgröße ändern, die app-speichern Sie die aktuelle position von text nicht zu ändern, dass nach Benutzer ändern der Schriftgröße.

Es funktioniert in den meisten Fällen, aber manchmal, wenn der Benutzer die Schriftgröße ändern, die app wird diese Art von Fehler, und ich kann immer noch nicht sagen, wie dieses Problem zu beheben.

Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer Grenzen enthält NaN: [0 nan; 280 524]'
* Ersten Wurf Aufruf-stack:
(0x3231e3e7 0x3a019963 0x3231e307 0x33edb4d7 0x33edb30d 0x3419141f 0x3419b82f 0x342d1cf1 0x3414f80d 0xe7bf1 0xe607d 0xfad35 0x34218087 0x34218111 0x34218087 0x3421803b 0x34218015 0x342178cb 0x34217db9 0x341405f9 0x3412d8e1 0x3412d1ef 0x35e455f7 0x35e45227 0x322f33e7 0x322f338b 0x322f220f 0x3226523d 0x322650c9 0x35e4433b 0x341812b9 0xdf9f1 0xdf978)
libc++abi.dylib: terminate aufgerufen, eine Ausnahme zu werfen

Ich auch nicht reproduzieren können, dieses Problem 100%, da dieses Problem passiert das gelegentlich.

Dies ist der code. Hat jemand eine Idee, dieses Problem zu beheben? Vielen Dank im Voraus.

- (UITextRange *)getCurrentTextRange:(UITextView *)textView {

    CGRect bounds               = textView.bounds;
    UITextPosition *start       = [textView characterRangeAtPoint:bounds.origin].start;
    UITextPosition *end         = [textView positionFromPosition:start offset:1];
    UITextRange *textRange      = [textView textRangeFromPosition:start toPosition:end];

    return textRange;
}

- (void)changeFontSize:(UIButton*)button {

    UITextRange *textRange  = [self getCurrentTextRange:_textView];
    int fontSize            = [[NSUserDefaults standardUserDefaults] integerForKey:@"fontSize"];

    //button.tag == 1 => decreaseFontSize
    if (button.tag == 1) {

        //set a minimum size
        if (fontSize <= [LSUniversalManager getFontSizeForMinimum]) {
            return;
        }

        fontSize--;

    //button.tag == 2 => increaseFontSize
    } else if (button.tag == 2) {        
        fontSize++;
    }

    _textView.font      = [UIFont systemFontOfSize:fontSize];
    [[NSUserDefaults standardUserDefaults] setInteger:fontSize forKey:@"fontSize"];

    //avoid shifting the scroll position after changing font size
    CGRect rect = [_textView firstRectForRange:textRange];
    [_textView setContentOffset:CGPointMake(0, rect.origin.y)];
}
InformationsquelleAutor Non Umemoto | 2013-04-07
Schreibe einen Kommentar