我只使用一个tapGesture识别器,并说如果它在某个标签内部轻敲,则更改文本。但是在点击之后我不希望标签文本能够被更改。这是功能:
@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)
}
}
}
答案 0 :(得分:1)
你做这件事的方式似乎不是一个很好的方法来实现这一目标,但是,如果你在设置文本后立即停用标签的用户互动,那么你,我的认为你已经完成了。由于这个视图超过了另一个视图,因此不允许父视图了解手势。
但是,事情并非如此有效
例如:
/.../
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)
}
}
}
}
请注意,这不是最好的解决方案,您应该能够将逻辑与视图分开,但对于您的问题,这样做会有所帮助
<强> FOOTNOTE:强>
请注意,在您的代码中,您正在遍历一系列标签,但是 您没有使用
label
标识符,请仔细查看您的身份 应该使用它。
答案 1 :(得分:0)
您可以为班级中的@IBOutlet
创建UITapGestureRecognizer
,并在某些情况下禁用用户互动,在您使用if
子句中的一个进入内部之后属性enabled
会禁用UITapGestureRecognizer
中的滑动互动。
像这样的代码:
@IBOutlet var tapGesture: UITapGestureRecognizer!
@IBAction func onTapped(sender: UITapGestureRecognizer) {
if condition {
self.tapGesture.enabled = false
}
}
我希望这对你有所帮助。