使用NSUndomanager撤消和重做按钮标题和操作

时间:2013-02-02 06:28:19

标签: iphone ios ipad-2

我正在创建一个像sudoku这样的ios应用程序。在该应用程序中我创建了撤消重做按钮。在数独中,每个网格值都是按钮标题。我想要的是每当我点击撤消或重做按钮,然后网格值根据动作而改变我可以用它来做NSUndomanager吗?有没有示例代码..?给我解决方案

  if([value intValue] == 0)
            {
                CurrentTitle=[NSString stringWithFormat:@"%@", [[b titleLabel ]text]];
                    [self AllSweepFunctionAction];
                    [b setTitle:appendedString forState:0];


                if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
                {
                    [[b titleLabel] setFont:[UIFont fontWithName:@"Kids" size:15]];
                }else
                {
                    [[b titleLabel] setFont:[UIFont fontWithName:@"Kids" size:7]];
                }
                [b setTitleColor:[UIColor darkGrayColor] forState:0];
                [ b titleLabel].lineBreakMode = NSLineBreakByCharWrapping;
                [b titleLabel].textAlignment = NSTextAlignmentCenter;
            }

1 个答案:

答案 0 :(得分:0)

首先,ViewControllers需要能够成为第一个处理手势的响应者,所以在ViewController中编写这个方法

- (BOOL)canBecomeFirstResponder 
{
    return YES;
}

其次:视图控制器在屏幕上显示时需要成为第一个响应者, 这可以通过致电[self becomeFirstResponder]-loadView

中的-viewDidLoad来完成
[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3];

您可以尝试延迟时间

然后,您可以在viewController中注册属性更改,并在按钮操作中调用undo的{​​{1}}方法。 另外我认为您可以覆盖此视图的控制器方法以进行编辑

NSUndoManager

以下是示例代码,包含撤消代码

这是a link

在上面的代码链接中将此代码添加到RootViewController.m的viewDidLoad

- (void)setEditing:(BOOL)editing animated:(BOOL)animated {

    [super setEditing:editing animated:animated];
//do some editing 


}

在此 // left undo button UIBarButtonItem *undoButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(undoOperations:)]; self.navigationItem.leftBarButtonItem = undoButton; 的某处添加此方法

RootViewController.m

你应该有一个带有撤销功能的左键,我认为这是一个很好的开始。