Изменить событие по умолчанию, используемое в IBAction при связывании из раскадровки с кодом - PullRequest
0 голосов
/ 26 февраля 2019

Можно ли изменить событие по умолчанию, которое пользовательский UIControl вызывает при связывании IBAction от раскадровки к коду?

Позвольте мне объяснить:

Если добавить UIButton в вашей раскадровке и перетащите его в код, вы получите всплывающее окно, в котором вы можете определить тип соединения, который вам нужен: IBOutlet или в этом случае IBAction.

В случае, если вы выберете IBAction, выбранное событие по умолчанию - Touch Up Inside, что здорово, потому что велика вероятность того, что вы просто хотите знать, когда нажимается кнопка!

UIButton IBAction

Но если вы делаете это из пользовательского UIView/UIControl или события подкласса UIButton, отправляемое событие по умолчанию всегда будет Value Changed

Custom UIControl IBAction

Итак, вот мой вопрос: возможно ли изменить поведение по умолчанию для пользовательского элемента интерфейса?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Я не думаю, что вы можете изменить значение по умолчанию, однако ...

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

Кроме того, если у вас уже есть @IBAction в вашем коде, например:

@IBAction func myFunc(_ sender: Any) {
    // code here
}

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

Не совсем "настраивать" нажатие Ctrl, но вы можете найти это проще / быстрее.

0 голосов
/ 26 февраля 2019

Ну, вы можете просто создать розетку для своей кнопки

 @IBOutlet var myButton: UIButton!

, а затем добавить ее действие программно:

myButton.addTarget(self, action: #selector(myButtonActionMethod(sender:)), for: .touchUpInside)

и,

@objc func myButtonActionMethod(sender:UIButton) { 
//do something
}

тогда у вас будет немного больше контроля.Это то, что вы имеете в виду?

...