У меня есть элемент управления представлением, и внутри я планирую разместить некоторые элементы управления, такие как текстовое поле кнопок и т. Д. Я могу перетащить свое представление по оси x, например:
1)

2)

со следующим кодом:
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if( [touch view] == ViewMain)
{
CGPoint location = [touch locationInView:self.view];
displaceX = location.x - ViewMain.center.x;
displaceY = ViewMain.center.y;
startPosX = location.x - displaceX;
}
CurrentTime = [[NSDate date] timeIntervalSince1970];
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
if( [touch view] == ViewMain)
{
CGPoint location = [touch locationInView:self.view];
location.x =location.x - displaceX;
location.y = displaceY;
ViewMain.center = location;
}
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
double time = [[NSDate date] timeIntervalSince1970]-CurrentTime;
UITouch *touch = [[event allTouches] anyObject];
if( [touch view] == ViewMain)
{
CGPoint location = [touch locationInView:self.view];
location.x =location.x - displaceX;
location.y = displaceY;
ViewMain.center = location;
double speed = (ViewMain.center.x-startPosX)/(time*2);
NSLog(@"speed: %f", speed);
}
}
не то чтобы мне пришлось добавлять глобальные переменные:
float displaceX = 0;
float displaceY = 0;
float startPosX = 0;
float startPosY = 0;
double CurrentTime;
Причина, по которой я создал эти переменные, заключается в том, что, когда я начинаю перетаскивать представление, представление перемещается из точки, в которой я касаюсь его, а не из середины.
В любом случае, если я коснусь кнопки или изображения, представление не будет перетаскиваться, даже если изображения имеют прозрачность на фоне. Я хочу иметь возможность перетаскивать представление независимо от того, есть ли изображение поверх представления. Я подумал, что, возможно, мне нужно разместить большое прозрачное представление поверх всего, но мне нужны кнопки, изображения и т. Д. Я хочу иметь возможность перетаскивать представление, как вы, с помощью:

обратите внимание, что я мог перетаскивать вид независимо от того, коснулся ли я сначала приложения / изображения или текста. Как я мог это сделать?