我只使用一个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标识符,请仔细看一下
  应该使用它。

10-08 07:43
查看更多