Как вы изменяете этот пример кода, чтобы мешать представлениям изображений складываться? - PullRequest
0 голосов
/ 14 августа 2011

http://developer.apple.com/library/ios/#samplecode/Touches/Introduction/Intro.html

Я новичок в разработке для IOS и играю с образцом кода для разработчиков IOS, пытаюсь узнать, как все работает, и т. Д. Я натолкнулся на этот пример кода (классическая версия, а не распознаватели жестов вер .), который делает все, что я ищу, кроме одной вещи. Когда изображения перетаскиваются поверх другого изображения, они начинают складываться, и вам нужно дважды щелкнуть изображение, чтобы разделить их.

Я потратил целую вечность, пытаясь понять, как заставить их не складываться. Я думаю, мне нужно запомнить, что часть перемещается в иваре, и помешать ей получить положение других представлений ... Но я не уверен, как это сделать. Если у кого-то есть время изменить пример кода, чтобы не складывать кусочки, я был бы очень признателен! Мне не терпится найти решение после того, как я потратил целую вечность, пытаясь это сделать!

Я постараюсь быть немного конкретнее с тем, что я пытаюсь сделать здесь ... Я сделал 26 из этих изображений, сделав их буквой алфавита. У меня есть 13 изображений в два ряда. A-M & N-Z. В настоящее время, если я перетаскиваю плитку А из верхнего ряда, перемещая ее вниз в «область правописания», мне приходится пересекать строку N-Z. Когда я это делаю, плитка «A» (просмотр изображения) поднимает любую плитку, над которой она висит. Поэтому, если я перетаскиваю букву «А» вниз, она поднимает плитку «N», потому что она будет зависать над ней, прежде чем опуститься в область «правописания».

Заранее спасибо за любую помощь или направление, которое вы можете дать мне!

1 Ответ

0 голосов
/ 15 августа 2011

Ну, у вас есть эта функция в примере кода

// Checks to see which view, or views,  the point is in and then calls a method to perform the closing animation,
// which is to return the piece to its original size, as if it is being put down by the user.
-(void)dispatchTouchEndEvent:(UIView *)theView toPosition:(CGPoint)position
{   
    // Check to see which view, or views,  the point is in and then animate to that position.
    if (CGRectContainsPoint([firstPieceView frame], position)) {
        [self animateView:firstPieceView toPosition: position];
    } 
    if (CGRectContainsPoint([secondPieceView frame], position)) {
        [self animateView:secondPieceView toPosition: position];
    } 
    if (CGRectContainsPoint([thirdPieceView frame], position)) {
        [self animateView:thirdPieceView toPosition: position];
    }
    // If one piece obscures another, display a message so the user can move the pieces apart
    if (CGPointEqualToPoint(firstPieceView.center, secondPieceView.center) ||
        CGPointEqualToPoint(firstPieceView.center, thirdPieceView.center) ||
        CGPointEqualToPoint(secondPieceView.center, thirdPieceView.center)) {
        touchInstructionsText.text = @"Double tap the background to move the pieces apart.";
        piecesOnTop = YES;
    } else {
        piecesOnTop = NO;
    }
}

, которую вы можете попробовать изменить на

// Checks to see which view, or views,  the point is in and then calls a method to perform the closing animation,
// which is to return the piece to its original size, as if it is being put down by the user.
-(void)dispatchTouchEndEvent:(UIView *)theView toPosition:(CGPoint)position
{   
    // Check to see which view, or views,  the point is in and then animate to that position.
    if (CGRectContainsPoint([firstPieceView frame], position)) {
        [self animateView:firstPieceView toPosition: position];
    } 
    if (CGRectContainsPoint([secondPieceView frame], position)) {
        [self animateView:secondPieceView toPosition: position];
    } 
    if (CGRectContainsPoint([thirdPieceView frame], position)) {
        [self animateView:thirdPieceView toPosition: position];
    }
    // If one piece obscures another, display a message so the user can move the pieces apart
    if (CGPointEqualToPoint(firstPieceView.center, secondPieceView.center) ||
        CGPointEqualToPoint(firstPieceView.center, thirdPieceView.center) ||
        CGPointEqualToPoint(secondPieceView.center, thirdPieceView.center)) {

        if (firstPieceView.center.x == secondPieceView.center.x)
            secondPieceView.center = CGPointMake(firstPieceView.center.x - 50, firstPieceView.center.y - 50);       
        if (firstPieceView.center.x == thirdPieceView.center.x)
            thirdPieceView.center  = CGPointMake(firstPieceView.center.x + 50, firstPieceView.center.y + 50);   
        if (secondPieceView.center.x == thirdPieceView.center.x)
            thirdPieceView.center  = CGPointMake(secondPieceView.center.x + 50, secondPieceView.center.y + 50);
        touchInstructionsText.text = @"";
    } else {
        piecesOnTop = NO;
    }
}

Дайте мне знать, если она делает то, что вы хотите ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...