相关疑难解决方法(0)

如何在Swift中注册NSUndoManager?

我如何UndoManager在Swift中使用?

这是我尝试复制的Objective-C示例:

[[undoManager prepareWithInvocationTarget:self] myArgumentlessMethod];
Run Code Online (Sandbox Code Playgroud)

然而,Swift似乎没有NSUndoManager,这(看似)意味着我不能调用NSInvocation它没有实现的方法.

我在Swift中尝试过基于对象的版本,但它似乎崩溃了我的Playground:

undoManager.registerUndoWithTarget(self, selector: Selector("myMethod"), object: nil)
Run Code Online (Sandbox Code Playgroud)

然而它似乎崩溃,即使我的对象接受类型的参数 undoManager

在Swift中执行此操作的最佳方法是什么?有没有办法避免使用基于对象的注册发送不必要的对象?

nsundomanager ios swift

11
推荐指数
3
解决办法
5454
查看次数

UITextView 撤消管理器不适用于替换属性字符串(iOS 6)

iOS 6 已更新为使用 UITextView 进行富文本编辑(UITextView 现在获得属性文本属性 \xe2\x80\x94,该属性是愚蠢的不可变\xe2\x80\x94)。这是在 NDA 下在 iOS 6 Apple 论坛上提出的问题,由于 iOS 6 现已公开,因此可以公开该问题......

\n\n

在 UITextView 中,我可以撤消任何字体更改,但无法撤消视图属性字符串副本中的替换。使用此代码时...

\n\n
- (void) replace: (NSAttributedString*) old with: (NSAttributedString*) new\n\n{\n1.    [[myView.undoManager prepareWithInvocationTarget:self] replace:new with:old];\n2.    old=new;\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

...撤消效果很好。

\n\n

但是,如果我添加一行以使结果在我的视图中可见,则 undoManager 不会触发“replace:with:”方法,因为它应该......

\n\n
- (void) replace: (NSAttributedString*) old with: (NSAttributedString*) new\n\n{\n1.    [[myView.undoManager prepareWithInvocationTarget:self] replace:new with:old];\n2.    old=new;\n3.    myView.attributedText=[[NSAttributedString alloc] initWithAttributedString:old];\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

任何想法?我对任何替换方法都有同样的问题,无论是否使用范围,对于我尝试在“2”行使用的 MutableAttributedString...

\n

uitextview nsundomanager ios6

5
推荐指数
1
解决办法
2129
查看次数

标签 统计

nsundomanager ×2

ios ×1

ios6 ×1

swift ×1

uitextview ×1