2016-12-20 3 views
-1

У меня есть UIButton, который используется для чего-то, когда пользователь прикасается к кнопке. Я сделал это в Touch Up Inside. Я должен реализовать другую функцию, которая рассматривается как вторичное действие для этого UIButton.Что такое соглашение для обработки вторичного действия UIButton в iOS

Что такое Соглашение в iOS для обработки более чем одного действия для одних UIButton? Должен ли я использовать

дважды нажмите действие

или

длинный пресс жест

или что-нибудь еще?

+0

Есть ли третье действие? –

+0

Нет, только два действия от того же UIButton –

+0

Таким образом, вы можете использовать выбранное состояние кнопки, когда пользователь сначала нажимает кнопку - выбирает его, а затем снова нажимает кнопку «Проверить, выбрана ли кнопка» - если да, это второе действие, другое первый. –

ответ

-1

Вторичное действие может быть добавлено несколькими способами, но длинный кран - лучший способ. Большинство мобильных приложений следуют этому пути. Вы можете использовать следующий код для достижения своей цели

// Способ добавления жестов на кнопку. Используйте кнопку выход вместо myButton

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTapOnMyButton:)]; 
[myButton addGestureRecognizer:longTap]; 

// Получает событие долгого нажатия на myButton

- (void)longTapOnMyButton:(UILongPressGestureRecognizer*)gesture { 
    if (gesture.state == UIGestureRecognizerStateEnded) { 
     // Write your code 
    } 
} 
+0

Можете ли вы предоставить какой-либо документ, где сказано, что длинный кран - лучший способ? Я уже реализовал длинный жест прессы, но команда Android говорит, чтобы реализовать двойное нажатие! –

+0

Можете ли вы предоставить какой-либо документ, где сказано, что длинный кран - лучший способ? Я уже реализовал длинный жест прессы, но команда Android говорит, чтобы реализовать двойное нажатие! –

+0

@ShuvoJoseph: Я не могу предоставить вам какой-либо документ здесь. Я просто видел, как большинство приложений используют его. И то, что я чувствую, когда вы реализуете двойное нажатие на UIButton, есть хорошие шансы, что он может вызвать ваш TouchUpInside после первого нажатия, если пользователь закроет его с некоторым интервалом. И это не решение нашей цели. Итак, если мы реализуем длинный кран, его различные действия все вместе и никогда не создадим такой конфликт. Это то, что я чувствую. Восприятие каждого может быть другим, но я реализовал это однажды, поэтому предложил вам.:) – Pushkraj

-2

Как предложил Имад использовать логическое значение с именем isClickedOnce (по умолчанию является ложным), когда пользователь нажимают первый раз затем установите значение true.

var isClickedOnce = false 

func switchAction(){ 
    if isClickedOnce{ 
     print("Second") 
    }else{ 
     isClickedOnce = true 
     print("First") 
    } 
} 
+0

Он уже используется для включения/выключения коммутатора! –

+0

Итак, чего вы хотите достичь? –

+0

Мне нужно назначить канал. Вопрос заключался в вторичном действии! не как выполнять разные задачи с одного и того же действия. –

0

Для поддержки приложения я бы не советовал реализовать 2 IBactions на кнопке. Я бы предложил создать процедуру IBAction, которая инициирует оба действия.

-1

Набор тегов кнопки внутри метода, установите тег по умолчанию 0,

- (IBAction)action:(id)sender { 
    UIButton *mybtn = (UIButton*)sender; 
    if (mybtn.tag == 0) { 
     //perform fist action 
     //set btn tag to 1 
     mybtn.tag = 1; 
    } 
    else if (mybtn.tag == 1) 
    { 
     //perform second action 
     //set btn tag to 0 
     mybtn.tag = 0; 
    } 
Смежные вопросы