gpt4 book ai didi

iOS 7 UITextView 选择文字或图片

转载 作者:行者123 更新时间:2023-11-29 03:33:42 24 4
gpt4 key购买 nike

我在 iOS 7 中有一个使用属性文本的 UITextView。在放入 UITextView 之前被解析的原始文本看起来像这样。

“欢迎来到我的例子@(John Doe)(johndoeid) @(Jane Doe)(janedoeid)”

当我解析此文本并将其放入 UITextView 时,它看起来像这样。

“欢迎来到我的示例John Doe Jane Doe

我的问题是这样的。

当我在 TextView 中单击 John Doe 或 Jane Doe 时,如何获取用户“johndoe”或“janedoe”的 ID,以便我可以对其执行操作?我正在考虑将原始位置和新位置存储起来并使用它,但这看起来很笨重。

最佳答案

假设您使用的是 NSAttributedString,您可以将自定义属性添加到文本中。请查看下面的链接,了解如何搜索与文本关联的特定属性的示例。

这些示例都不会真正创建自定义属性,但您可以看到我们如何搜索每个字体属性并更改字体大小。一旦附加自定义属性,您就可以执行类似的操作。如果您遇到困难,请告诉我,我可以尝试为您破解一些更具体的内容。

http://ossh.com.au/design-and-technology/software-development/implementing-rich-text-with-images-on-os-x-and-ios/

具体地在 OSTextView.m 源列表文件中查找 resizeText 方法。以下是搜索 NSFont 属性的一些代码

[self.textStorage enumerateAttributesInRange:rangeAll options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:
^(NSDictionary *attributes, NSRange range, BOOL *stop) {

// Iterate over each attribute and look for a Font Size
[attributes enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
if ([[key description] isEqualToString:@"NSFont"]) {
UIFont *font = obj;
float fontSize = font.pointSize + bySize;
smallestFontSize = MIN(smallestFontSize, fontSize);
largestFontSize = MAX(largestFontSize, fontSize);
}

}];
}];

该方法的下面是替换 NSFont 属性的代码,在您的情况下,您可以只添加自定义属性 - 请注意,我们首先复制现有属性,然后添加到它们,因为您可能不想删除任何现有属性属性。

[self.textStorage enumerateAttributesInRange:rangeAll options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:
^(NSDictionary *attributes, NSRange range, BOOL *stop) {

NSMutableDictionary *mutableAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];

// Iterate over each attribute and look for a Font Size
[mutableAttributes enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

if ([[key description] isEqualToString:@"NSFont"]) {

UIFont *font = obj;
float fontSize = font.pointSize;
fontSize += bySize;
fontSize = MIN(fontSize, MAXFONTSIZE);

// Get a new font with the same attributes and the new size
UIFont *newFont = [font fontWithSize:fontSize];

// Replace the attributes, this overrides whatever is already there
[mutableAttributes setObject:newFont forKey:key];
}

}];

// Now replace the attributes in ourself (UITextView subclass)
[self.textStorage setAttributes:mutableAttributes range:range];
}];

现在,您的自定义属性已整齐地嵌入到属性字符串中,您应该能够对其进行存档和取消存档,而不会丢失它。

关于iOS 7 UITextView 选择文字或图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com