Я работаю над приложением для 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 не вызывается, пока пользователь не щелкнет снова.
Спасибо за помощь.