Действие в addTarget моей кнопки не работает - PullRequest
0 голосов
/ 21 января 2019

Xcode не сообщал об ошибках, но при нажатии кнопки ничего не печаталось. Я попробовал это с действием:

#selector (print), action: #selector (self.print), action: #selector (ViewController.print)..etc..

Swift 4, Xcode 10.1

class SomeViewController:UIViewController {
var button:UIButton = UIButton()
func setupButton()
{
    button = UIButton(frame: CGRect(x: 140, y: 140, width: 90, height: 40))
    button.addTarget(self, action: #selector(print(-:)) , for: .touchUpOutside)
    navigationController?.navigationBar.addSubview(button)
    button.setTitle("Convert", for: .normal)
    button.backgroundColor = .yellow
    view.addSubview(button)


}

@objc func print(_sender: UIButton)
{
    print("Stackoverflow")
}

override func viewDidLoad() 
{
    super.viewDidLoad()
    view.addSubview(CollectionView)
    CollectionView.frame = view.frame
    setupButton()
 }
}

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вам просто нужно изменить тип события с .touchUpOutside на .touchUpInside

Вот события документация

0 голосов
/ 21 января 2019

Изменить это (Вам нужно touchUpInside вместо touchUpOutside)

button.addTarget(self, action: #selector(print(_:)) , for: .touchUpOutside)

до

button.addTarget(self, action: #selector(printRes) , for: .touchUpInside)

@objc func printRes(_ sender: UIButton) { }

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


Также, чтобы получить действие нажатия кнопки, установите его тип

button = UIButton(type: .system)
button.frame  = CGRect(x: 140, y: 140, width: 90, height: 40)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...