У меня проблема с распознаванием касаний на iPad.
Я подклассифицировал UIImageView следующим образом:
@interface MyUIImageView : UIImageView
{
BOOL _dragActive;
CGPoint originalLocation;
}
@end
@implementation MyUIImageView
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
_dragActive = YES;
originalLocation = self.center;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_dragActive)
{
UITouch* touch = [touches anyObject];
self.center = [touch locationInView:self.superview];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_dragActive)
{
self.center = originalLocation;
}
_dragActive = NO;
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
if (_dragActive)
{
self.center = originalLocation;
}
_dragActive = NO;
}
@end
У меня есть несколько элементов управления ImageView (MyUIImageView) на стороне вида контроллерав стороне, но мой touchSegan больше всего вызывается только для передней панели, хотя они разделены на виде контроллера.
Похоже, что существует невидимый "слой обнаружения", который появляется за пределами ImageViews.
Когда я щелкаю и перетаскиваю ImageView, перетаскиваемый является левым или правым, в зависимости от того, какой из них находится впереди.Если я изменю ось z, то поведение повторяется, но на изображениях, которые находятся спереди.