Seb*_*bbe 48 uigesturerecognizer ios swift swift3
我正在尝试添加一个UITapGesture
UIButton,以便在点击时触发一个函数.我正在使用Swift 3
并且收到一些错误:
由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [SwiftRunner.ViewController tapBlurButton]:无法识别的选择器发送到实例0x149e07610'
这大致是我所拥有的:
// Swift 3
import UIKit
class ViewController {
@IBOutlet weak var qsBlurButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: Selector(("tapBlurButton")))
qsBlurButton.addGestureRecognizer(tapGesture)
}
func tapBlurButton(sender: UITapGestureRecognizer) {
print("Please Help!")
}
}
Run Code Online (Sandbox Code Playgroud)
Nir*_*v D 106
从你的代码中使用swift 3.0,所以改变你的selector
语法
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(_:)))
Run Code Online (Sandbox Code Playgroud)
和你的功能一样
func tapBlurButton(_ sender: UITapGestureRecognizer) {
print("Please Help!")
}
Run Code Online (Sandbox Code Playgroud)
编辑:
不知道你正在使用带有敲击手势的按钮,而不是使用内置addTarget
的按钮方法,不需要像这样创建轻击手势
qsBlurButton.addTarget(self, action: #selector(self.tapBlurButton(_:)), forControlEvents: .TouchUpInside)
func tapBlurButton(_ sender: UIButton) {
print("Please Help!")
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特3
在func
选择器看起来像这样的情况下(注意:它没有_):
func tapBlurButton(sender: UITapGestureRecognizer) {
print("Please Help!")
}
Run Code Online (Sandbox Code Playgroud)
然后选择器看起来像这样:
#selector(self.tapBlurButton(sender:))
Run Code Online (Sandbox Code Playgroud)
所以选择器的最终代码是这样的:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(sender:)))
Run Code Online (Sandbox Code Playgroud)
如果未指定第一个参数_
,则需要使用第一个参数的全名.
要添加手势识别器,您必须创建一个手势识别器,指示它将调用哪个功能:
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTapFrom(recognizer:)))
Run Code Online (Sandbox Code Playgroud)
然后将其添加到您需要的元素.(您正在使用按钮,而其他人已解释按钮具有其原生的"addTarget"方法)
出于解释目的,假设您想将其添加到UIView:
self.someView.addGestureRecognizer(tapGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)
并且不要忘记默认情况下某些元素"非用户交互",因此您可能也必须更改该属性:
self.someView.isUserInteractionEnabled = true
Run Code Online (Sandbox Code Playgroud)
在Swift 4中,该函数需要@objc声明:
@objc func handleTapFrom(recognizer : UITapGestureRecognizer)
{
// Some code...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
69613 次 |
最近记录: |