我正在创建一个像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;
}
答案 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
你应该有一个带有撤销功能的左键,我认为这是一个很好的开始。