- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要帮助来理解如何从 UIViewController
中抽象出交互。 .出于所有意图和目的,假设我有一个控制拼图的 View Controller 。我有一系列拼图 View 、拼图板 View (放置拼图的地方)以及其他一些杂项 View 。现在我与这些拼图有典型的泛式交互。
我需要做的是将交互抽象出来,这样我就可以在单击按钮或调用方法时完全改变整个系统的“交互模式”,可以说是整个系统的“交互模式”,同时保持一切状态否则它在切换之前的确切位置。例如,在切换之后,他们不必用手指拖动棋子,而是必须“选择”一个棋子,然后利用陀螺仪的重力滑动它。
我对 iOS 还很陌生,实际上总体上几乎没有 OO 经验,所以在我破坏我的代码来解决这个问题之前,我真的想从更有经验的人那里得到一些建议。 (是的,我会拍个快照,但我还是很紧张!)无论如何,我在想也许我应该做这样的事情:
最佳答案
好问题。
在我看来,OO 是应用程序开发的关键点。许多应用程序开发人员根本没有太多的OO经验,这导致在SO上出现很多误解,烦躁,奇怪的问题和答案。
首先是对Cocoas框架的基本架构以及如何使用它们缺乏了解,因为它们在很多方面都遵循继承和对象组合的思想,并利用了OO模式。这种缺乏会导致与框架的广泛斗争和/或(当学习第一个 OO 类(class)时)关于 OO 概念的完全过度设计。
对于您的问题:您似乎已经对基本的 OO 原则有了足够的了解,可以了解框架内部发生了什么。现在您应该注意保持简单。你的益智游戏听起来像一个典型的应用程序:你一个人或几个人一起工作,整个代码库会很小,它不是一个库,它的生命周期会很短,一旦完成,你将修复错误并拥有小改进,但不适应完整的新环境等等。所以我认为你不应该对问题中描述的问题大量使用 OO 模式(即使我猜所描述的解决方案会起作用)。
我会做这样的事情:
touchesBegan
, touchesMoved
, touchesEnded
, accelerometer:didAccelerate:
int controlMode; // in PuzzleController.h
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
switch (controlMode)
{
case ControlModeDrag:
touchedPiece = [self findPiece:event];
case ControlModeGravity:
//do nothing;
case ControlModeSomethingElse:
// whatever
default: //...
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
switch (controlMode)
{
case ControlModeDrag:
[self moveTouchedPiece:event];
case ControlModeGravity:
//do nothing;
case ControlModeSomethingElse:
// whatever
default: //...
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
switch (controlMode)
{
case ControlModeDrag:
touchedPiece = nil;
case ControlModeGravity:
touchedPiece = [self findPiece:event];
case ControlModeSomethingElse:
// whatever
default: //...
}
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
switch (controlMode)
{
case ControlModeDrag:
//do nothing
case ControlModeGravity:
[self moveTouchedPiece:accelaration];
case ControlModeSomethingElse:
// whatever
default: //...
}
}
关于ios - 如何从 UIViewController 中抽象出交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10409549/
我是一名优秀的程序员,十分优秀!