以编程方式点击视图
Programmatically Tap View
我创建了一个自定义视图,用作带有图像和文本的单选按钮。我需要能够在控制器加载时加载保存的 selection。我这样设置我的听众:
for button in genderButtons {
button.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(genderTapped(_:))))
}
@objc private func genderTapped(_ sender: UITapGestureRecognizer) {
for button in genderButtons {
button.select(sender.view! == button) // Toggles the button to display selected/deslected state.
...
}
}
问题是我找不到将视图告诉 select 的方法。我尝试制作手势识别器和对象,但它没有任何可用于触发它的方法。 'buttons' 实际上不是按钮,它们是视图,所以我无法发送操作事件。
如何 select 正确的按钮代码?
您可以像这样在自定义视图中添加此方法,
Class CustomView: UIView {
public func select(_ value: Bool) {
self.backgroundColor = value ? .green: .red
}
}
然后在下面的方法中,您可以为点击的视图调用 select
。
@objc private func genderTapped(_ sender: UITapGestureRecognizer) {
(sender.view as? CustomView)?.select(true)
}
只需直接调用 genderTapped
,将已附加到所需 "button" 的手势识别器交给它即可。
例如,如果 thisGenderButton
是您想要 "tap" 的那个,请说:
if let tap = thisGenderButton.gestureRecognizers?[0] as? UITapGestureRecognizer {
genderTapped(tap)
}
我创建了一个自定义视图,用作带有图像和文本的单选按钮。我需要能够在控制器加载时加载保存的 selection。我这样设置我的听众:
for button in genderButtons {
button.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(genderTapped(_:))))
}
@objc private func genderTapped(_ sender: UITapGestureRecognizer) {
for button in genderButtons {
button.select(sender.view! == button) // Toggles the button to display selected/deslected state.
...
}
}
问题是我找不到将视图告诉 select 的方法。我尝试制作手势识别器和对象,但它没有任何可用于触发它的方法。 'buttons' 实际上不是按钮,它们是视图,所以我无法发送操作事件。
如何 select 正确的按钮代码?
您可以像这样在自定义视图中添加此方法,
Class CustomView: UIView {
public func select(_ value: Bool) {
self.backgroundColor = value ? .green: .red
}
}
然后在下面的方法中,您可以为点击的视图调用 select
。
@objc private func genderTapped(_ sender: UITapGestureRecognizer) {
(sender.view as? CustomView)?.select(true)
}
只需直接调用 genderTapped
,将已附加到所需 "button" 的手势识别器交给它即可。
例如,如果 thisGenderButton
是您想要 "tap" 的那个,请说:
if let tap = thisGenderButton.gestureRecognizers?[0] as? UITapGestureRecognizer {
genderTapped(tap)
}