ibireme / YYText

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

图文编辑的问题 #223

Closed leibaozai closed 8 years ago

leibaozai commented 8 years ago

你好,首先感谢你的开源。在使用中有几个问题想请教下解决方案。 使用的YYTextView,文字-图片(或者UIView)-文字-图片(或者UIView)... 图片有加手势,在未删除的情况下,点击图片可以浏览大图并且能定位到点击的当前图片。现在问题是在YYTextView,随机删除一个图片,我该怎么去删除存放图片的数据源,以及是删除的那一张了?

ibireme commented 8 years ago

直接读取和操作 textView.attributedText。 遍历 attributedText 的属性,就能得到所有内容了。

leibaozai commented 8 years ago

如图,我现在能刷新数据源。但由于之前是每添加一个UIImageView,给设置tag和手势,且tag++。通过tag去获取当前点击的哪一张图片。但现在我还是做不到,只能每次显示第一张。

2

ibireme commented 8 years ago

所有数据现在都在 textView.attributedText 里面,而且这个值肯定是和界面显示完全对应的,需要时可以直接从里面取到,不用在外面维护一个列表。

leibaozai commented 8 years ago

我只需要textView.attributedText里面的UIImageView.image。然后把image组成一个数组,以及当前点击的下标即tag传过去。会model一个展示图片的controller。

leibaozai commented 8 years ago

现在不知道点击的是哪一个,无法获取到tag

ibireme commented 8 years ago

现在你已经获得到所有 imageView 列表了,也获取到当前点击的 imageView 了,用一个 for 循环遍历对比一下,就能对应上是哪张了啊。

leibaozai commented 8 years ago

这是我的点击事件。我点击图片是直接就跳转过去了,不走YYTextView的代理方法。 还有怎么对比image,好像没有判断相等的。不是很理解,能贴个代码吗?万分感激。。。

1

ibireme commented 8 years ago

首先,假设你的图片都是用 ImageView 实现的。

UIImageView *tapView = xxx; //点击传过来的
NSArray *imageViews = [self getImageViewsFromTextView]; //你自己的方法
for (NSUInteger i = 0, max = imageViews.count, i < max, i++) {
    UIImageView *cur = imageViews[i];
    if (cur == tapView) {...} // 就是这张了
}

当然如果都是 UIImage ,那也一样,直接 ==

leibaozai commented 8 years ago

非常感谢。问题解决了。 但是想问下 这样判断 cur == tapView 是基于内存么?还是其他什么原因,之前从来没有做过判断。再次感谢。

ibireme commented 8 years ago

这是 C 语言的基础吧。。