Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
cocoale opened this issue Jul 25, 2016 · 8 comments

Comments

@cocoale
Copy link

cocoale commented Jul 25, 2016

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

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

ibireme commented Aug 5, 2016

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

@kaioser
Copy link

kaioser commented Jun 26, 2018

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

@stepor
Copy link

stepor commented Jul 1, 2019

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

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

@kaioser
Copy link

kaioser commented Jul 1, 2019

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

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

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

@kaioser
Copy link

kaioser commented Jul 1, 2019

@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
Copy link

stepor commented Jul 1, 2019

@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
Copy link

liy666 commented May 8, 2020

@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;
}

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

@wolfcon
Copy link

wolfcon commented Apr 19, 2021

#953 will fix it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants