当我正在进行半页卷曲模态转换时:
如何判断页面何时恢复到当前状态?我想在“设置”视图关闭时调用一些东西。
我尝试使用viewWillAppear:(BOOL)animated
但是在关闭视图时似乎没有调用它。有任何想法吗?
答案 0 :(得分:2)
您可以在主视图上注册NSNotificationCenter观察者,并在背景视图上发布通知。而不是viewWillAppear,您可以使用viewDidLoad。
//编辑:在给定的矩形中获取触摸手势的示例代码
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if ([[event allTouches]count] == 1) {
UITouch *t = [[touches allObjects]lastObject];
CGPoint p = [t locationInView:self.view];
if (p.y < 200) NSLog(@"above 200");
}
}
答案 1 :(得分:1)
在viewDidLoad中,注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(updateView:)
name:@"updateRootView"
object:nil];
现在这是我们称之为
的通知- (void) updateView:(NSNotification *) notification
{
/* notification received after the page is uncurled */
}
调用方法:
- (void) unCurlPage
{
// All instances of TestClass will be notified
[[NSNotificationCenter defaultCenter] postNotificationName:@"updateRootView" object:self];
}
不要忘记取消通知
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
答案 2 :(得分:0)
ViewWilAppear是一个UIViewController消息/方法。如果您只是更改视图,则不会调用它。您用来关闭设置视图的代码是什么样的?
听起来你需要重构一下。假设所有这些都由父UIViewController处理此设置视图,您可以实现类似:
- (void)settingsPanelOpen {
// present the modal
// hook to inform of opening (if necessary)
}
- (void)settingsPanelClose {
// dismiss modal
// hook to inform of closing
}
如果您需要知道设置何时关闭,那么settingsPanelClose可能会有一个钩子。
您可以做的另一件事是将UIViewController子类化为SettingsViewController并覆盖 viewDidDisappear:方法以启动SettingsDidSave通知或以其他方式通知您的应用它已关闭。