如果你看图像,你会看到一个文本视图,按钮和一个滑块。
我已经完成了所有的步骤,除了最后一步,即当我点击滑块,它不断消失。我知道它消失了,因为我实现了UITapGestureRecognizer。
我想我的问题是,每次我点击屏幕上的任何地方,我都希望滑动条消失,但当我使用滑动条时,我不希望滑动条消失,而现在每次我松开滑动条时,滑动条都会消失。
我曾尝试在sizeRefont中实现另一个UITapGestureRecognizer,该函数用于保持sizeRefont.isHidden为false,但当我这样做时,每当我点击屏幕时滑块不会消失。
我试着在sizeRefont操作中输入sizeRefont.ishiden=false,但也不起作用。

class ResizeController: UIViewController {

@IBOutlet weak var sizeRefont: UISlider!
@IBOutlet weak var textView: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissRefontSize(_:)))
    view.addGestureRecognizer(tap)
}

@IBAction func sizeRefont(_ sender: AnyObject) {
    let fontSize = CGFloat(sizeRefont.value)
    textView.font = UIFont(name: textView.font!.fontName, size: fontSize * 30.0)
}


@IBAction func showSlider(_ sender: Any) {
    sizeRefont.isHidden = false
}


func dismissRefontSize(_ sender: UITapGestureRecognizer) {
    if sender.location(in: sizeRefont){
        sizeRefont.isHidden = false
    } else {
        sizeRefont.isHidden = true
    }

}

}
if sender.location(in:sizeRefont)上有一个错误,它说CGPoint不能转换为Bool
Image

最佳答案

首先需要做的是将dismissRefontSize()方法调整为:

func dismissRefontSize(_ sender: UITapGestureRecognizer) {
 let location = sender.location(in: view)
If sizeReFont.frame.contains(location) {
// do nothing
}else {

sizeReFont.isHidden = true
}
}

另一件需要调整的事情是创建viewDidLoad()中识别的tap,如下所示:
let tap = UITapGestureRecognizer(target: self, action : #selector(dismissRefontSize(_:)))

07-28 03:44