0

我正在创建一个 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;
            }
4

1 回答 1

0

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

- (BOOL)canBecomeFirstResponder 
{
    return YES;
}

[self becomeFirstResponder]其次:当视图控制器出现在屏幕上时,它需要成为第一响应者,这可以通过调用-loadView-viewDidLoad

[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.3];

您可以尝试延迟时间

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

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

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


}

这是示例代码,包含撤消代码

这是一个链接

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

 // left undo button
    UIBarButtonItem *undoButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(undoOperations:)];
    self.navigationItem.leftBarButtonItem = undoButton;

并在此RootViewController.m添加此方法

-(void)undoOperations:(id)sender
{
    [self.undoManager undo];

}

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

于 2013-11-15T10:30:12.593 回答