У меня есть элемент управления видом, и внутри я планирую разместить некоторые элементы управления, такие как текстовое поле кнопок и т. Д. Я могу перетащить свой вид вдоль оси 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;
причина, по которой я создал эти переменные, заключается в том, что когда я начинаю перетаскивать вид, вид перемещается из точки, где я касаюсь его, а не из середины.
В любом случае, если я коснусь кнопки или изображения, представление не будет перетаскиваться, даже если изображения имеют прозрачный фон. Я хочу иметь возможность перетаскивать вид независимо от того, есть ли изображение поверх вида. Я подумал, что, может быть, мне нужно поместить большой прозрачный вид поверх всего, но мне нужно иметь кнопки, изображения и т. Д. Я хочу иметь возможность перетаскивать вид так же, как вы можете:
обратите внимание, что я смог перетащить вид независимо от того, когда я впервые коснулся приложения / изображения или текста. Как я мог это сделать?