2010-02-07 3 views

ответ

0

Возможно, вы обнаружите, что «вид», который в данный момент является событием касания, перетягивается, даже если это кнопка. Вы также можете использовать соединение «touch drag enter» для кнопок в Interface Builder. Посмотрите вкладку соединений, нажав кнопку cmd + 2, выбрав кнопку.

1

Да.

В вашем файле .h

IBOutlet UIButton *aButton; 

В файле .m

-(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]; 
    } 
} 

И, наконец, в Interface Builder, подключить кнопку 'aButton' и отключить «взаимодействия с пользователем Включено "для вашей кнопки. Это важно, потому что это позволяет касатьсяМожет обращаться с ним.

Я скорректировал приведенный выше код, чтобы проверить состояние кнопок. Это делается для того, чтобы не нажимать кнопку несколько раз, когда вы перетаскиваете палец внутрь области.

Чтобы получить ваши «фортепианные клавиши», чтобы работать, когда вы нажмете их, используйте -(void)touchesBegan

Чтобы установить кнопку Выделить состояния обратно = NO;, используйте -(void)touchesEnded

Я должен был выяснить, точно такую ​​же вещь вы после. Я не мог понять Touch Drag Enter

Чтобы избежать множественных сообщений по этому вопросу, ознакомьтесь с моими вопросами и ответами.

question 1

question 2

+0

Heey .. Спасибо ему за ответ, но я получил это предупреждение «запрос для члена' view'in что-то не структуры или объединения»по линии UITouch * сенсорный = [[событие ....! Я изменил эту строку в UITouch * touch = [[event allTouches] anyObject]; и он работает. Но .. =), если я нажимаю свою кнопку, она должна звучать заметкой. Но теперь я не могу нажать, только слайд. И если я задвигаю свою кнопку, нота звучит более одного раза .. ты можешь мне помочь? Спасибо за ваш ответ. я видел это только сейчас. Thx – user268086

+0

См. Мое обновленное сообщение. – Jonathan