代码之家  ›  专栏  ›  技术社区  ›  christo16

覆盖粘贴:设置文本格式

  •  1
  • christo16  · 技术社区  · 15 年前

    我想捕获一个粘贴到控件中的字符串,并在粘贴之前对该字符串应用一些自定义格式。

    这怎么可能?

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  6
  •   Felixyz    15 年前

    重写 paste: 在视图/控件中(粘贴:是 UIResponderStandardEditActions 非正式议定书)。最简单的方法是:

    - (void)paste:(id)sender
    {
       UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
       NSString* rawString = pasteboard.string;
       NSString* formattedString =  // do something fun with rawString here
       pasteboard.string = formattedString;
       [super paste:sender];
    }
    

    这是假设您不需要对字符串做一些非常花哨的事情(例如插入动画笑脸或其他东西),在这种情况下,您不应该调用 super 但是你自己做插入(如果你在 UITextView 你可以使用 selectedRange 属性以正确执行插入操作)。

    编辑:从 NSPasteBoard 你应该使用 –stringForType: 或其中之一 several other data access methods . 您可能需要验证字符串/数据以确保可以粘贴它。

    你可能不该打电话 超级的 但是使用

    [self insertText:formattedString];
    

    如果在nstextView上执行此操作。如果你在和另一个类一起工作,你必须找出在那种情况下什么是合适的。