Я работаю над приложением для полуфортепиано с раскладкой клавиатуры, отличной от обычной.
Я создал представление вручную с помощью UIButtons. Моя проблема заключалась в том, что я не знал, как перейти от UIButton к другому, я понял это с помощью addTarget с опцией withEvent, которая дала мне доступ к прикосновениям.
Теперь, после того как я добавил цель следующим образом:
[C addTarget:self action:@selector(outsideOfKey: forEvent:) forControlEvents:UIControlEventTouchDragOutside|UIControlEventTouchDragInside];
[C addTarget:self action:@selector(keyGetsLeft: forEvent:) forControlEvents:UIControlEventTouchUpOutside | UIControlEventTouchUpInside];
(также для всех остальных ключей),
Мне удалось сделать их скользящими,
outsideOfKey:forEvent:
выглядит следующим образом:
-(void) outsideOfKey:(id)sender forEvent:(UIEvent *)event
{
for(UITouch *t in [event allTouches])
{
CGPoint touchPoint = [t locationInView:window];
if(CGRectContainsPoint(C.frame, touchPoint))
{
C.highlighted = YES;
}
else{
C.highlighted = NO;
}
(Сделано и для всех остальных клавиш) Я могу перемещаться между другими клавишами и в них, и когда я оставляю их в keyGetsLeft:forEvent
: я только что использовал тот же синтаксис без else, и выделенное стало НЕТ.
До сих пор это легко, но потом, когда я пытаюсь сделать мультитач, я могу двигать только одно из касаний, а остальные должны оставаться в одном и том же положении.
И даже больше, если я уберу один из пальцев, все они становятся невыделенными, я знаю причины всего этого, но я не знаю, как это исправить и заставить это работать.