ibireme / YYText

Powerful text framework for iOS to display and edit rich text.
MIT License
8.85k stars 1.69k forks source link

为啥在iOS13上面出现两个光标呢 #910

Open pwszzy opened 4 years ago

stepor commented 4 years ago

同问,希望有大神出来共享一下。 @pwszzy 请问你这边是怎么重现的

pwszzy commented 4 years ago

就是一个输入框,然后升级系统到iOS13之后就变成两个光标了,至今没解决,想换成系统的了

pwszzy commented 4 years ago

同问,希望有大神出来共享一下。 @pwszzy 请问你这边是怎么重现的

就是一个输入框,然后升级系统到iOS13之后就变成两个光标了,至今没解决,想换成系统的了

vvard3n commented 4 years ago

同问,希望有大神出来共享一下。 @pwszzy 请问你这边是怎么重现的

就是一个输入框,然后升级系统到iOS13之后就变成两个光标了,至今没解决,想换成系统的了

YYTextView.m文件中,_showMagnifierCaret方法和_showMagnifierRanged方法首行添加return;可临时解决该问题

stepor commented 4 years ago

@pwszzy 是目前是这样解决的:

在 YYTextView.m 重写 系统 的 addSubview 方法,隐藏系统的控件

- (void)addSubview:(UIView *)view {
    [super addSubview:view];
    if(view &&
       ([view isKindOfClass:NSClassFromString(@"UITextSelectionView")] || [view isKindOfClass:NSClassFromString(@"UISelectionGrabberDot")])) {
        view.hidden = YES;
    }

    //解决蓝点问题
    Class Cls_selectionGrabberDot = NSClassFromString(@"UISelectionGrabberDot");
    if (view && [view isKindOfClass:[Cls_selectionGrabberDot class]]) {
        view.backgroundColor = [UIColor clearColor];
        view.tintColor = [UIColor clearColor];
        view.bounds = CGRectZero;
    }

    //获取UITextSelectionView
    //解决双光标问题
    Class Cls_selectionView = NSClassFromString(@"UITextSelectionView");
    if (view && [view isKindOfClass:[Cls_selectionView class]]) {
        view.backgroundColor = [UIColor clearColor];
        view.tintColor = [UIColor clearColor];
        view.hidden = YES;
    }
}
pwszzy commented 4 years ago

@pwszzy 是目前是这样解决的:

在 YYTextView.m 重写 系统 的 addSubview 方法,隐藏系统的控件

- (void)addSubview:(UIView *)view {
    [super addSubview:view];
    if(view &&
       ([view isKindOfClass:NSClassFromString(@"UITextSelectionView")] || [view isKindOfClass:NSClassFromString(@"UISelectionGrabberDot")])) {
        view.hidden = YES;
    }

    //解决蓝点问题
    Class Cls_selectionGrabberDot = NSClassFromString(@"UISelectionGrabberDot");
    if (view && [view isKindOfClass:[Cls_selectionGrabberDot class]]) {
        view.backgroundColor = [UIColor clearColor];
        view.tintColor = [UIColor clearColor];
        view.bounds = CGRectZero;
    }

    //获取UITextSelectionView
    //解决双光标问题
    Class Cls_selectionView = NSClassFromString(@"UITextSelectionView");
    if (view && [view isKindOfClass:[Cls_selectionView class]]) {
        view.backgroundColor = [UIColor clearColor];
        view.tintColor = [UIColor clearColor];
        view.hidden = YES;
    }
}

试了下解决了,您目前是这样修改的,线上验证过了吗?

stepor commented 4 years ago

@pwszzy 是目前是这样解决的: 在 YYTextView.m 重写 系统 的 addSubview 方法,隐藏系统的控件

- (void)addSubview:(UIView *)view {
    [super addSubview:view];
    if(view &&
       ([view isKindOfClass:NSClassFromString(@"UITextSelectionView")] || [view isKindOfClass:NSClassFromString(@"UISelectionGrabberDot")])) {
        view.hidden = YES;
    }

    //解决蓝点问题
    Class Cls_selectionGrabberDot = NSClassFromString(@"UISelectionGrabberDot");
    if (view && [view isKindOfClass:[Cls_selectionGrabberDot class]]) {
        view.backgroundColor = [UIColor clearColor];
        view.tintColor = [UIColor clearColor];
        view.bounds = CGRectZero;
    }

    //获取UITextSelectionView
    //解决双光标问题
    Class Cls_selectionView = NSClassFromString(@"UITextSelectionView");
    if (view && [view isKindOfClass:[Cls_selectionView class]]) {
        view.backgroundColor = [UIColor clearColor];
        view.tintColor = [UIColor clearColor];
        view.hidden = YES;
    }
}

试了下解决了,您目前是这样修改的,线上验证过了吗?

@pwszzy 正在审核,还没有上线