如何为 UIButton 添加工具提示?

问题描述 投票:0回答:4

UIButton 实例是否有一个工具提示属性,当鼠标悬停在按钮上时将显示文本?

xcode uibutton
4个回答
7
投票

UIButton 是一个 iOS 类。
没有鼠标。


3
投票

由于IOS中没有鼠标,因此UIButton没有“鼠标悬停”或tooltip属性。

但是您可以尝试使用事件处理来模拟。

如果用户触摸按钮并按住手指,则会显示文本。 如果用户触摸,他喜欢选择该按钮。 如果用户确实移出按钮并结束触摸,则工具提示将被隐藏。

检查UIButton的UIControlEvent,即“Touch Up Inside”“Touch Drag Enter”“Touch Drag Exit”


0
投票

确实,您在 iOS 中没有鼠标,但现在我们有了 Catalyst,可以让您在 macOS 上运行 ios 应用程序,我们有了鼠标。

对于您可以使用的任何 UIView :

addGestureRecognizer(UIHoverGestureRecognizer(target: self, action: #selector(hoverEvent(_:))))

并在实施中做你想做的事情,例如:

    @objc
func hoverEvent(_ sender: UIHoverGestureRecognizer? = nil) {
    
    switch sender?.state {
    case .began, .changed:
        myButton.isHidden = false
    case .ended, .cancelled, .failed, .possible:
        myButton.isHidden = true
    default:
        break
    }
}

0
投票
  1. 向工具栏添加悬停手势:

    //悬停

    让悬停 = UIHoverGestureRecognizer(目标: self, 操作: #selector(self.hovering(_:))) self.toolBar?.addGestureRecognizer(悬停)

  2. 循环工具栏的按钮并分配一个UIToolTipInteraction:

    @objc func悬停(_识别器:UIHoverGestureRecognizer){

     let location = recognizer.location(in: self.toolBar)
    
     let buttons = self.toolBar?.items ?? []
    
     // state
    
     switch recognizer.state {
    
         case .began, .changed:
    
             for button in buttons {
    
                 let view = button.value(forKey: "view") as? UIView
    
                 if view?.frame.contains(location) ?? false {
    
                     view?.backgroundColor = UIColor.init(
                         red: 33.0/255.0,
                         green: 33.0/255.0,
                         blue: 33.0/255.0,
                         alpha: 1.0)
    
                     let interaction = UIToolTipInteraction(defaultToolTip: button.title)
    
                     view?.addInteraction(interaction)
    
                 } else {
    
                     view?.backgroundColor = .clear
    
                 }
    
             }
    
             break
    
         case .ended:
    
             for button in buttons {
    
                 let view = button.value(forKey: "view") as? UIView
    
                 view?.backgroundColor = .clear
    
             }
    
             break
    
         default:
             break
    
     }
    

    }

© www.soinside.com 2019 - 2024. All rights reserved.