У меня есть несколько кнопок, которые я хочу активировать тремя разными способами.
- Touch Down
- Touch Down - множественное касание (одновременно)
- Touch Drag Inside (аналогично перетаскиванию пальца по пианино)
Первые два очевидно просты в IB. Однако у многих людей, в том числе и у меня, были проблемы с Touch Drag внутри. В итоге я использовал - (void) touchesMoved
[см. Код]. Это прекрасно работает для перетаскивания ... но чтобы заставить его работать, мне пришлось отключить кнопки "Взаимодействие с пользователем" в IB. Это означает, что я потерял «Touch Down» и возможности мультитач.
Итак, чтобы заставить «Touch Down» работать, я использовал - (void) touchSegan [см. Код]. Это отлично работает, но я не могу заставить работать мультитач.
Кто-нибудь знает, как заставить мои кнопки срабатывать одновременно во время мультитач?
Или ... Есть ли способ переместить касания и функции кнопок в IB для совместной работы?
Я попробовал touch.view.multiTouchEnabled = Yes;
, и я удостоверился, что у меня несколько кнопок, хорошо в IB ... Но ничего.
Ниже мой код.
Большое спасибо за вашу помощь.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(p1.frame, location))
{
if (!p1.isHighlighted){
[self pP01];
[p1 setHighlighted:YES];
}
}else {
[p1 setHighlighted:NO];
}
//
if(CGRectContainsPoint(p2.frame, location))
{
if (!p2.isHighlighted){
[self pP02];
[p2 setHighlighted:YES];
}
}else {
[p2 setHighlighted:NO];
}
if(CGRectContainsPoint(p3.frame, location))
{
if (!p3.isHighlighted){
[self pP03];
[p3 setHighlighted:YES];
}
}else {
[p3 setHighlighted:NO];
}
}
///
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(p1.frame, location))
{
[self pP01];
[p1 setHighlighted:YES];
}
if(CGRectContainsPoint(p2.frame, location))
{
[self pP02];
[p2 setHighlighted:YES];
}
if(CGRectContainsPoint(p3.frame, location))
{
[self pP03];
[p3 setHighlighted:YES];
}
}