Прикосновения с помощью кнопки? - PullRequest
1 голос
/ 08 февраля 2010

Можно ли использовать функцию touchesMoved с кнопками вместо UIImageView s?

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Да.

В вашем .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];
    }
}

И, наконец, в Интерфейсном Разработчике подключите вашу кнопку к «aButton» и отключите «Взаимодействие с пользователем включено» для вашей кнопки. Это важно, потому что это позволяет touchesMoved справиться с этим.

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

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

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

Мне пришлось выяснить, что же вы ищете. Я не мог понять Touch Drag Enter

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

вопрос 1

вопрос 2

0 голосов
/ 08 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...