Longpress On UI Element (или как определить, какой элемент нажат?) - PullRequest
0 голосов
/ 06 января 2012

У меня есть приложение с довольно большим разделом справки в формате PDF. До меня доходит, что PDF такой большой, и я могу сказать в инструментах, что это слишком сильно нагружает процессор, так что я собираюсь постепенно прекратить его.

Я полагал, что более легкая реализация будет использовать UILongPressGestureRecognizer, который я мог бы прикрепить к каждому элементу пользовательского интерфейса, который отображал бы указанный текст, возможно, в поповере или UIMenuController, указывающем на функцию выбранного элемента.

Итак, мой вопрос заключается в следующем: как я могу прикрепить что-то вроде тега к КАЖДОМУ элементу в представлении, чтобы его можно было передать одному методу? Когда я попробовал теги, я обнаружил, что нет способа получить к нему доступ через раздел (id)sender сигнатуры моего метода, и, следовательно, не было никакого способа провести различие между элементами.

РЕДАКТИРОВАТЬ: для человека ниже: Хотя вы решили мой лицевой вопрос вопроса об определении тегов представлений, как можно было бы присоединить распознаватели жестов к UIBarButtonItem, чтобы определить его тег? Ваши реализации допускают очень неприятный нераспознанный селектор, потому что UIGestureRecognizer не имеют свойства тега.

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы можете извлечь тег из объекта, переданного в качестве отправителя.Просто нужно проверить его класс и разыграть его соответствующим образом.tag - это свойство UIView, поэтому мы начнем с него.

- (void)someMethod:(id)sender
{
    if (![sender isKindOfClass:[UIView class]])
        return;

    UIView *senderView = (UIView *)sender;
    NSInteger tag = senderView.tag;
}
1 голос
/ 06 января 2012

Вы можете получить доступ к тегам через - (IBAction) xxxxxx: (id) отправитель; вот так:

NSInteger tagValue = [sender tag];

Но почему вы не можете просто соединить действия со своими элементами через Interface Builder? Какие элементы пользовательского интерфейса вы используете здесь?

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