- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
centerLabelGesture
被定义在 viewDidLoad()
的范围之外,所以在调用 .addGestureRecognizer(centerLabelGesture)
时, centerLabelGesture 尚未定义。
import UIKit
import SnapKit
class ViewController: UIViewController {
var screen: UIView!
var centerLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
screen = UIView()
centerLabel = UILabel()
view.addSubview(screen)
screen.addSubview(centerLabel)
screen.backgroundColor = .white
screen.snp.makeConstraints { (make) in
make.top.equalTo(view)
make.right.equalTo(view)
make.left.equalTo(view)
make.bottom.equalTo(view)
}
centerLabel.text = "I hope I'm centered."
centerLabel.snp.makeConstraints { (make) in
make.center.equalTo(screen)
}
centerLabel.isUserInteractionEnabled = true
centerLabel.addGestureRecognizer(centerLabelGesture)
}
let centerLabelGesture = UITapGestureRecognizer(target: self, action: #selector(centerLabelTapped))
@objc func centerLabelTapped() {
centerLabel.text = "Ouch, you tapped me!"
}
}
matt 指出 centerLabelGesture
需要在 centerLabel.addGestureRecognizer(centerLabelGesture)
之前声明,在 viewDidLoad()
最佳答案
这是一个微妙的错误。问题是您放置此行的位置:
let centerLabelGesture = UITapGestureRecognizer(target: self, action: #selector(centerLabelTapped))
将该行移动到 viewDidLoad
代码中:
centerLabel.isUserInteractionEnabled = true
let centerLabelGesture = UITapGestureRecognizer(target: self, action: #selector(centerLabelTapped))
centerLabel.addGestureRecognizer(centerLabelGesture)
原因是你得到那条线的地方,它是一个实例属性,当你说 self
作为实例属性初始化器中的目标时,它并不意味着你的想法确实如此(这意味着类,而不是实例),所以当您点击时消息被误导并且什么都不做。
我已经在这个问题上提交了一个错误;在我看来,编译器至少应该警告您,您正在犯一个潜在的错误。
关于swift - 在 Swift 中,您在哪里声明与 addGestureRecognizer() 相关的 UITapGestureRecognizer()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676744/
我的类(class): class SelectBox { internal static func openSelector(list:[String: String], parent:UI
每次 viewWillAppear 它调用self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer
代码: for ... { let view = CategoryClass.createMyClassView() view.myLabel.text = packTitle vi
我有一个函数可以创建一个带有选择器函数的按钮作为目标。按钮的地址被传递给 handleSelectPhoto。 lazy var image1Button = createButton(selecto
这个问题在这里已经有了答案: iOS: Adding UITapGestureRecognizer to container view intercepts UICollectionView's d
下面的代码是使用 viewController 实现的,我可以为 Apple Watch 做同样的事情并添加动画吗? let filteredSubviews = self.view.subviews
我正在尝试在 tableView 单元格内的 UILabel 中添加点击事件,如下所示。 let tap = UITapGestureRecognizer(target: self, action:
我是 iOS 新手,swift。我的 tableView 中有两个部分。我希望能够在第二部分而不是第一部分执行 longPressGesture,使用户能够在第二部分中重新排序 tableview 单
我正在尝试在我的滑动菜单库应用程序中使用 SWRevealViewController,但我需要使用一个选项编辑库,我将解释如下。当使用 addgestureRecognizer 并通过从左向右按住然
我正在尝试将手势识别器添加到主视图,但出现此错误: 'ViewController' 没有可见的@interface 声明选择器 addGestureRecognizer 错误 在这条线上: [se
我有一个带有表格的叠加层,我想在背景中添加一个 Tap 手势识别器以关闭 View ,并将 Target 添加到叠加层中的一个按钮,它做同样的事情。 叠加层按预期正常显示,但是每当我点击黑色背景或取消
我有带有嵌入式 UICollectionView 的 UITableView。在第一部分中,有带有 UITextField 的自定义单元格,在第二部分中有 UICollectionView。 当用户点
我正在使用 UIScrollView 和 UIStackView 水平滚动并选择一个 UIControl 元素。 我在 UIStackView 中的 UIControl 元素上设置了 addTarge
问题 centerLabelGesture 被定义在 viewDidLoad() 的范围之外,所以在调用 .addGestureRecognizer(centerLabelGesture) 时, ce
我以这种方式实现了带有 UIGestureRecognizer 的 ViewController: // Extension for GestureRecognizer extension UIVie
我是一名优秀的程序员,十分优秀!