Ios 以编程方式向UILabel添加点击手势
我试图在swift 4中的函数中为动态创建的UILabel添加点击手势,但它没有启动UIAPTgestureRecognitor函数。当我从viewDidLoad函数添加点击手势时,它可以工作,但我必须从其他函数添加点击手势 这是密码Ios 以编程方式向UILabel添加点击手势,ios,uilabel,swift4,uitapgesturerecognizer,programmatically-created,Ios,Uilabel,Swift4,Uitapgesturerecognizer,Programmatically Created,我试图在swift 4中的函数中为动态创建的UILabel添加点击手势,但它没有启动UIAPTgestureRecognitor函数。当我从viewDidLoad函数添加点击手势时,它可以工作,但我必须从其他函数添加点击手势 这是密码 override func viewDidLoad() { super.viewDidLoad() createLabel() } func createLabel() { let label = UILabel
override func viewDidLoad() {
super.viewDidLoad()
createLabel()
}
func createLabel() {
let label = UILabel()
label.text = "abc"
label.numberOfLines = 0
label.frame.size.width = self.otherlinksStack.bounds.width
label.font = label.font.withSize(17) // my UIFont extension
label.sizeToFit()
label.tag = 1
self.otherlinksStack.addSubview(label)
let labelTapGesture = UITapGestureRecognizer(target:self,action:#selector(self.doSomethingOnTap))
label.isUserInteractionEnabled = true
label.addGestureRecognizer(labelTapGesture)
}
@objc func doSomethingOnTap() {
print("tapped")
}
如果您的手势在viewDidLoad中工作,则在从其他功能添加手势后,该手势可能会被其他控件的手势覆盖
尝试在与所有其他控件分开的控件上添加手势。如果您的手势在viewDidLoad中工作,则在从其他功能添加手势后,手势可能会被其他控件的手势覆盖 尝试在与所有其他控件分离的控件上添加手势。
func addtapprocess(){
让LabelTap手势=UITapGestureRecognitor(目标:自我,操作:#选择器(doSomethingOnTap))
//添加此行以启用标签上的用户交互
myLabel.isUserInteractionEnabled=true
myLabel.AddGestureRecognitor(LabelTap手势)
}
@objc func doSomethingOnTap(){
打印(“抽头”)
}
然后从viewDidLoad
调用addtappiration()
,或者从任何您想要添加点击的函数调用。func addtappiration(){
让LabelTap手势=UITapGestureRecognitor(目标:自我,操作:#选择器(doSomethingOnTap))
//添加此行以启用标签上的用户交互
myLabel.isUserInteractionEnabled=true
myLabel.AddGestureRecognitor(LabelTap手势)
}
@objc func doSomethingOnTap(){
打印(“抽头”)
}
然后从
viewDidLoad
调用addtappership()
,或者从您想要添加点击的任何函数调用。使用以下代码添加点击手势:
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapGestureMethod(_:)))
tapGesture.numberOfTapsRequired = 1
tapGesture.numberOfTouchesRequired = 1
yourLabel.isUserInteractionEnabled = true
yourLabel.addGestureRecognizer(tapGesture)
这是点击手势方法:
@objc func tapGestureMethod(_ gesture: UITapGestureRecognizer) {
Do your code here
}
使用以下代码添加轻触手势:
let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapGestureMethod(_:)))
tapGesture.numberOfTapsRequired = 1
tapGesture.numberOfTouchesRequired = 1
yourLabel.isUserInteractionEnabled = true
yourLabel.addGestureRecognizer(tapGesture)
这是点击手势方法:
@objc func tapGestureMethod(_ gesture: UITapGestureRecognizer) {
Do your code here
}
你做错了几件事
// your code
label.frame.size.width = self.otherlinksStack.bounds.width
label.sizeToFit()
如果要将标签添加到stackView,则无需设置其框架——由stack view处理。如果stackView的对齐方式设置为.fill
,则标签仍将拉伸至其宽度。如果未设置为“填充”,则标签将根据其文本根据需要水平展开。因此,也无需调用.sizeToFit()
将视图添加到堆栈视图时,请使用.addArrangedSubview
,否则将添加到堆栈视图中另一个视图的顶部
这应该可以正常工作(在我的快速测试中):
你做错了几件事
// your code
label.frame.size.width = self.otherlinksStack.bounds.width
label.sizeToFit()
如果要将标签添加到stackView,则无需设置其框架——由stack view处理。如果stackView的对齐方式设置为.fill
,则标签仍将拉伸至其宽度。如果未设置为“填充”,则标签将根据其文本根据需要水平展开。因此,也无需调用.sizeToFit()
将视图添加到堆栈视图时,请使用.addArrangedSubview
,否则将添加到堆栈视图中另一个视图的顶部
这应该可以正常工作(在我的快速测试中):
在问题中添加代码好的,您是否将
userInteractionEnabled
设置为true
?是的,我将userInteractionEnabled设置为true。但是它不起作用你需要提供更多的信息-请看问题中的代码。我编辑了它。将代码添加到问题中。嗯,你是否将userInteractionEnabled
设置为true
?是的,我将userInteractionEnabled设置为true。但是它不起作用你需要提供更多的信息-请看问题中的代码。我编辑了它。不,它不工作。我以编程方式创建UILabel,并在从viewDidLoad调用的函数中添加tap手势。不,它不起作用。我正在以编程方式创建UILabel,并在从viewDidLoad调用的函数中添加tap手势。OP正在创建标签--它可以分开多少?OP正在创建标签--它可以分开多少?