我只使用一个tapGesture Recognizer,并说,如果将其轻拍到某个标签内,则更改文本。但是,点击后,我不希望标签文本能够被更改。这是函数:
@IBAction func onTapped(sender: UITapGestureRecognizer) {
print("Here")
let selectedPoint = sender.locationInView(self.view)
print(selectedPoint)
for label in labelArray{
if CGRectContainsPoint(label1.frame, selectedPoint){
label1.text = String(currentLetter)
}
else{
label1.userInteractionEnabled = false
}
if CGRectContainsPoint(label2.frame, selectedPoint){
label2.text = String(currentLetter)
}
if CGRectContainsPoint(label3.frame, selectedPoint){
label3.text = String(currentLetter)
}
if CGRectContainsPoint(label4.frame, selectedPoint){
label4.text = String(currentLetter)
}
if CGRectContainsPoint(label5.frame, selectedPoint){
label5.text = String(currentLetter)
}
if CGRectContainsPoint(label6.frame, selectedPoint){
label6.text = String(currentLetter)
}
if CGRectContainsPoint(label7.frame, selectedPoint){
label7.text = String(currentLetter)
}
if CGRectContainsPoint(label8.frame, selectedPoint){
label8.text = String(currentLetter)
}
if CGRectContainsPoint(label9.frame, selectedPoint){
label9.text = String(currentLetter)
}
if CGRectContainsPoint(label10.frame, selectedPoint){
label10.text = String(currentLetter)
}
}
}
最佳答案
不过,执行此操作的方法似乎并不是实现此目的的好方法,但是,如果在设置文本后立即停用标签的“用户交互”功能,则我认为您已经完成了。由于此视图位于另一个视图之上,因此不会让父视图知道该手势。
但是,事情不是这样的
例如:
/.../
if CGRectContainsPoint(label9.frame, selectedPoint){
label9.text = String(currentLetter)
label9.userInteractionEnabled = false
}
/.../
会什么都不做,相反,这可能是一个更好的方法:
@IBAction func onTapped(sender: UITapGestureRecognizer) {
let selectedPoint = sender.locationInView(self.view)
for label in labelArray {
if CGRectContainsPoint(label.frame, selectedPoint){
if label.text == "" {
label.text = String(currentLetter)
}
}
}
}
请注意,这也不是最好的解决方案,您应该能够将逻辑与视图分开,但是对于您的问题,这可以解决问题。
脚注:
请注意,在您的代码中,您正在遍历标签数组,但是
您没有使用
label
标识符,请仔细看一下应该使用它。