UIGestureRecognizer 仅在屏幕的一部分上
UIGestureRecognizer on only one part of the screen
如果您查看图片,您会看到 textview、button 和 slider.
除了最后一步,我已经完成了所有步骤,当我点击滑块时,它会不断消失。我知道它消失了,因为我实现了 UITapGestureRecognizer。
我想我的问题是,我希望每次点击屏幕上的任何地方时滑块都消失,但是 当我使用滑块时,我不希望滑块消失每次我松开水龙头时都会发生。
我尝试在 sizeRefont 中再实现一个 UITapGestureRecognizer,它具有保持 sizeRefont.isHidden false 的功能,但是当我这样做时,每当我点击屏幕时,滑块都不会消失。
我尝试将 sizeRefont.isHidden = false 放入 sizeRefont 操作中,但它也不起作用。
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() 中识别的点击创建为以下内容:
let tap = UITapGestureRecognizer(target: self, action : #selector(dismissRefontSize(_:)))
如果您查看图片,您会看到 textview、button 和 slider.
除了最后一步,我已经完成了所有步骤,当我点击滑块时,它会不断消失。我知道它消失了,因为我实现了 UITapGestureRecognizer。
我想我的问题是,我希望每次点击屏幕上的任何地方时滑块都消失,但是 当我使用滑块时,我不希望滑块消失每次我松开水龙头时都会发生。
我尝试在 sizeRefont 中再实现一个 UITapGestureRecognizer,它具有保持 sizeRefont.isHidden false 的功能,但是当我这样做时,每当我点击屏幕时,滑块都不会消失。
我尝试将 sizeRefont.isHidden = false 放入 sizeRefont 操作中,但它也不起作用。
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() 中识别的点击创建为以下内容:
let tap = UITapGestureRecognizer(target: self, action : #selector(dismissRefontSize(_:)))