YYText icon indicating copy to clipboard operation
YYText copied to clipboard

文本高亮,以及YYTextView选中某段文本与UIScrollView的冲突问题

Open cocoale opened this issue 8 years ago • 8 comments

作者您好! 我在使用YYText的过程中,遇到了如下两个小问题:

  1. 外界无法自由控制文本高亮和取消高亮,只能由用户点击触发高亮。因此有这方面需求时(比如点击某段特殊文本,需要高亮并且弹出popover,再次点击取消高亮),只能修改内部实现。
  2. YYTextView关闭editable,开启selectable,且父视图为UITableView/UIScrollView时,用户无法选中一段文本进行拷贝,同时长按触发的放大镜也无法正常工作。因为拖拽手势与父视图UIScrollView冲突,父视图滚动的同时,selectedRange无法正常控制,放大镜也会自动消失。 感谢!

cocoale avatar Jul 25 '16 15:07 cocoale

  1. 是的,highlight 状态暴露出去的话,就非常难控制了,API 设计也会非常麻烦...
  2. 这个可以试试修改 scrollView 的 delaysContentTouches 和 canCancelContentTouches 属性。

ibireme avatar Aug 05 '16 10:08 ibireme

@ibireme 你好,我也遇到了选择YYTextView的文字的时候与tableView的滑动冲突问题了。我是在cell里放了一个YYTextView。把tableView的delaysContentTouches和canCancelContentTouches设置为no之后,选择文字时候可选了,但是不选文字的时候YYTextView却不能滑动了,这有办法解决吗

kaioser avatar Jun 26 '18 09:06 kaioser

@ibireme 你好,我也遇到了选择YYTextView的文字的时候与tableView的滑动冲突问题了。我是在cell里放了一个YYTextView。把tableView的delaysContentTouches和canCancelContentTouches设置为no之后,选择文字时候可选了,但是不选文字的时候YYTextView却不能滑动了,这有办法解决吗

你好,现在我也遇到这个问题,请问你之后是怎么处理的呢?

stepor avatar Jul 01 '19 03:07 stepor

@ibireme 你好,我也遇到了选择YYTextView的文字的时候与tableView的滑动冲突问题了。我是在cell里放了一个YYTextView。把tableView的delaysContentTouches和canCancelContentTouches设置为no之后,选择文字时候可选了,但是不选文字的时候YYTextView却不能滑动了,这有办法解决吗

你好,现在我也遇到这个问题,请问你之后是怎么处理的呢?

以前的项目里遇到的,忘记了,我去看一下代码

kaioser avatar Jul 01 '19 03:07 kaioser

@ibireme 你好,我也遇到了选择YYTextView的文字的时候与tableView的滑动冲突问题了。我是在cell里放了一个YYTextView。把tableView的delaysContentTouches和canCancelContentTouches设置为no之后,选择文字时候可选了,但是不选文字的时候YYTextView却不能滑动了,这有办法解决吗

你好,现在我也遇到这个问题,请问你之后是怎么处理的呢?

监听快捷菜单出来和隐藏的事件: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowEditMenu:) name:UIMenuControllerWillShowMenuNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didHideEditMenu:) name:UIMenuControllerDidHideMenuNotification object:nil];

然后这两个方法里这么写: -(void)willShowEditMenu:(id)sender { self.tableView.canCancelContentTouches = NO; self.tableView.delaysContentTouches = NO; }

-(void)didHideEditMenu:(NSNotification *)notifi { self.tableView.canCancelContentTouches = YES; self.tableView.delaysContentTouches = YES; }

kaioser avatar Jul 01 '19 03:07 kaioser

@ibireme 你好,我也遇到了选择YYTextView的文字的时候与tableView的滑动冲突问题了。我是在cell里放了一个YYTextView。把tableView的delaysContentTouches和canCancelContentTouches设置为no之后,选择文字时候可选了,但是不选文字的时候YYTextView却不能滑动了,这有办法解决吗

你好,现在我也遇到这个问题,请问你之后是怎么处理的呢?

监听快捷菜单出来和隐藏的事件: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowEditMenu:) name:UIMenuControllerWillShowMenuNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didHideEditMenu:) name:UIMenuControllerDidHideMenuNotification object:nil];

然后这两个方法里这么写: -(void)willShowEditMenu:(id)sender { self.tableView.canCancelContentTouches = NO; self.tableView.delaysContentTouches = NO; }

-(void)didHideEditMenu:(NSNotification *)notifi { self.tableView.canCancelContentTouches = YES; self.tableView.delaysContentTouches = YES; }

好的,十分感谢🙏

stepor avatar Jul 01 '19 05:07 stepor

@ibireme 你好,我也遇到了选择YYTextView的文字的时候与tableView的滑动冲突问题了。我是在cell里放了一个YYTextView。把tableView的delaysContentTouches和canCancelContentTouches设置为no之后,选择文字时候可选了,但是不选文字的时候YYTextView却不能滑动了,这有办法解决吗

你好,现在我也遇到这个问题,请问你之后是怎么处理的呢?

监听快捷菜单出来和隐藏的事件: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willShowEditMenu:) name:UIMenuControllerWillShowMenuNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didHideEditMenu:) name:UIMenuControllerDidHideMenuNotification object:nil];

然后这两个方法里这么写: -(void)willShowEditMenu:(id)sender { self.tableView.canCancelContentTouches = NO; self.tableView.delaysContentTouches = NO; }

-(void)didHideEditMenu:(NSNotification *)notifi { self.tableView.canCancelContentTouches = YES; self.tableView.delaysContentTouches = YES; }

稍微有点瑕疵:如果文本内容超过屏幕,不能继续往下拖动

liy666 avatar May 08 '20 11:05 liy666

#953 will fix it

wolfcon avatar Apr 19 '21 03:04 wolfcon