NSParagraphStyle iOS -如何检测块和列表?

wwodge7n  于 2023-04-01  发布在  iOS
关注(0)|答案(3)|浏览(115)

我得到了一个NSParagraphStyle对象,当使用NSLog检查时,包含列表和块,但是似乎绝对没有办法访问它们。使用OS X我创建文档并将它们以文本视图传输到iOS,列表和表格可以成功地重新创建并显示在NSLog中。但是NSParagraphStyle没有方法或属性来访问它们,有人可以帮助吗?D:

nsc4cvqm

nsc4cvqm1#

声明

@property(readonly,copy)NSArray *textLists
@property(readonly,copy)NSArray *textBlocks
链接
但是,看起来没有办法在iOS中访问它们而不进行内省,因为它们的声明不包括在UIKit中。

if ([paragraph respondsToSelector:@selector(textLists)])
  NSArray* lists = [paragraph performSelector:@selector(textLists)];
cyvaqqii

cyvaqqii2#

if let textLists = paragraphStyle.value(forKey: "textLists") as? NSArray {
  if let item = textLists.firstObject as? NSObject {
    print(item.description)
  }
}
gxwragnw

gxwragnw3#

实际上textLists属性在iOS上也可用。我不知道他们什么时候改变了它,但这是真的。https://developer.apple.com/documentation/uikit/nsparagraphstyle/1534193-textlists
现在你可以访问paragraphStyle.textLists来检查给定的NSAttributedString是否包含列表,你可以使用如下代码:

let attributedString = NSAttributedString(...) // get your attributed string

attributedString.enumerateAttribute(.paragraphStyle, in: NSRange(location: 0, length: length)) { value, range, _ in
  guard let paragraphStyle = value as? NSParagraphStyle else { return } // safe check
  if !paragraphStyle.textLists.isEmpty {
    // you got your list item
  }
}

相关问题