iOS перетаскивает объект между двумя видами - PullRequest
0 голосов
/ 26 марта 2012

Я работаю над приложением для iPhone, где у меня есть два UIViews: один слева и один справа. На каждом из этих представлений есть коллекция UIButton. Эти кнопки можно нажимать и перетаскивать между ними.

У меня это работает довольно хорошо. У меня на самом деле есть три вида: слева, справа и весь экран. Когда пользователь щелкает UIButton, он вырывается из своего текущего представления во весь вид. Пользователь может свободно перетаскивать его. Когда пользователь отпускает свой щелчок, UIB-кнопка выскочит из целого представления и в любой вид, в котором оно закончено.

Этот процесс работает довольно хорошо. Моя проблема в том, что когда пользователь нажимает кнопку, и она открывается в окне «Весь», кнопка UIB удаляет значение «Нажатие», и пользователь должен щелкнуть второй раз, чтобы перетащить кнопку. Может кто-нибудь сказать мне, как это можно сделать одним щелчком мыши?

Мой код распределен по многим классам, но вот лучшее, что я могу сделать:

// If the current block is selected
if( tempBlock.selected )
{
    // The current block becomes selected
    selectedBlock = tempBlock;
    [selectedBlock retain];

    // Take out of garageBlocks
    [garageBlocks removeObjectAtIndex:i];

    // Move the image to the front
    [selectedBlock.button removeFromSuperview];
    [self.view addSubview:(UIView*)selectedBlock.button];

    // Show available slots
    [self UpdateAvailableSlots];
    [self ShowAvailableSlots];

    // end the loop
    i = [garageBlocks count];
}

Код в кнопке:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
selected = TRUE;
}


-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
// Get the touched position
touch = [[event allTouches] anyObject];
location = [touch locationInView:view];

location.x -= 32;
location.y -= 32;

selected = TRUE;

// Position the object if in garage screen
if( garageScreen )
{
    [self SetPosition: (location.x) : (location.y)];
}
}


-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
selected = FALSE;
}

Даже если я установил selected = TRUE в классе кнопок, он не будет перетаскиваться после изменения вида. Я думаю, что при изменении вида прикосновенияMoved не вызывается, пока пользователь не щелкнет снова.

Спасибо за помощь.

...