Ну, во-первых, если ваш новый, я предлагаю получить книгу. Мой Начало разработки iPhone 4
Дэйв Марк, Джек Наттинг и Джефф Ламарш (Апресс). Это спасло меня от тратить много времени и начать. Кроме того, могут быть более подходящие книги, подходящие для того, что вам нужно, но у этой книги есть довольно хорошая глава, посвященная касаниям, прикосновениям и жестам ... 15: Удары, касания и жесты.
В любом случае, вот суть:
const UIImageView * viewBeingDragged = nil;
// in your rootController
// (lets say a UIViewController with one UIImageView)
//
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint touchPoint = [[touches anyObject] locationInView:self.view];
//our image views are direct decendents of our main view
//the following method returns the farthest decendent from the target
//in the point, so make sure you dont have any intersecting subviews!
//pretty sure you dont need event
//
UIView *v = [self.view hitTest:touchPoint event:nil];
NSAssert([v isMemberOfClass:[UIImageView class]], @"Not an image view?!?!?"]);
viewBeingDragged = (UIImageView *)v;
[v removeFromSuperview];
// or just gray it out...
[self.view.superview.superview addSubview:v];
//should be your splitViewController, if not get from AppDelegate
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
viewBeingDragged.center =
[[touches anyObject] locationInView:SplitControllerView];
if (viewBeingDragged.frame intersects with detailViewController.view.frame)
{
//visual cue that landing zone is set
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
// last check if view still intersects
// if so move underlieing data from left to right
// redraw left view
// remove viewBeingDragged from superview
// add viewBeingDragged to
viewBeingDragged = nil;
}
Вы также можете реализовать касания Отменено
Я не проверял этот метод, поэтому могут возникнуть неожиданные вещи.
Кроме того, UIView имеет те же сенсорные методы, поэтому, если вы хотите создать свой собственный настраиваемый контроллер представлений / представлений, чтобы сделать его более ... "расширяемым".