如何将触摸插座添加到自定义 UIView?
How do you add touch outlets to custom UIView?
我创建了以下自定义 UIVIew:
//
// YearSelectorSegControl.swift
// OurDailyStrength iOS
//
// Created by Rob Avery on 8/28/17.
// Copyright © 2017 Rob Avery. All rights reserved.
//
import UIKit
@IBDesignable
class YearSelectorSegControl: UIView {
var buttons = [UIButton]()
var selector: UIView!
var sv: UIStackView!
var currentPosition: Int = 0
@IBInspectable
var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable
var borderColor: UIColor = UIColor.clear {
didSet {
layer.borderColor = borderColor.cgColor
}
}
@IBInspectable
var textColor: UIColor = .lightGray {
didSet {
updateView()
}
}
@IBInspectable
var textBackground: UIColor = .clear {
didSet {
updateView()
}
}
func updateView() {
// ... code here ...
}
override func draw(_ rect: CGRect) {
layer.cornerRadius = 0
}
}
当我转到 Interface Builder 并尝试将此 UIView 连接到控制器时,唯一允许的是插座。我希望能够在触摸此自定义 UIView 时将其连接到一个函数。我该怎么做?
您必须继承 UIControl 而不是 UIView
@IBDesignable
class YearSelectorSegControl: UIControl {
...
}
使用故事板,
将身份检查器上 UIView
的 class 更改为 UIButton
现在您可以将 UIView
的操作连接设置为 UIButton
见下方代码
@IBAction func clickView(_ sender: UIButton) {
//perform your actions in here
}
我创建了以下自定义 UIVIew:
//
// YearSelectorSegControl.swift
// OurDailyStrength iOS
//
// Created by Rob Avery on 8/28/17.
// Copyright © 2017 Rob Avery. All rights reserved.
//
import UIKit
@IBDesignable
class YearSelectorSegControl: UIView {
var buttons = [UIButton]()
var selector: UIView!
var sv: UIStackView!
var currentPosition: Int = 0
@IBInspectable
var borderWidth: CGFloat = 0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable
var borderColor: UIColor = UIColor.clear {
didSet {
layer.borderColor = borderColor.cgColor
}
}
@IBInspectable
var textColor: UIColor = .lightGray {
didSet {
updateView()
}
}
@IBInspectable
var textBackground: UIColor = .clear {
didSet {
updateView()
}
}
func updateView() {
// ... code here ...
}
override func draw(_ rect: CGRect) {
layer.cornerRadius = 0
}
}
当我转到 Interface Builder 并尝试将此 UIView 连接到控制器时,唯一允许的是插座。我希望能够在触摸此自定义 UIView 时将其连接到一个函数。我该怎么做?
您必须继承 UIControl 而不是 UIView
@IBDesignable
class YearSelectorSegControl: UIControl {
...
}
使用故事板,
将身份检查器上
UIView
的 class 更改为UIButton
现在您可以将
UIView
的操作连接设置为UIButton
见下方代码
@IBAction func clickView(_ sender: UIButton) {
//perform your actions in here
}