修复 iOS 中的多个按钮单击事件?
Posted
技术标签:
【中文标题】修复 iOS 中的多个按钮单击事件?【英文标题】:Fix multiple button click events in iOS? 【发布时间】:2018-05-24 13:01:36 【问题描述】:有什么方法可以防止多个按钮点击事件。在我的应用程序中,我有一个场景,当用户连续点击按钮时会调用多个按钮事件。即使添加了加载指示器,有时它仍然会发生。有没有通用的解决方案来处理这个问题?
【问题讨论】:
设置 UIView.exclusiveTouch? 没有得到你的问题,你能把你的代码放上来 @TuğberkKaanDuman 独家触摸我猜是行不通的。在我的问题是检测到多次点击并且里面的代码被多次执行导致多次导航。 @ShauketSheikh 当我连续点击按钮时,会发生多个导航。我在按钮上添加了一个加载指示器,它覆盖了整个视图,以便用户无法与 UI 交互。但在某些情况下,按钮操作仍会执行多次。 btn.isUserInteractionEnabled = false 当您点击按钮时 【参考方案1】:当你在click方法中点击按钮时放代码
btnClick.userInteractionEnabled = false;
在你完成任务后,它不会让用户再点击按钮,放另一行代码让用户点击按钮
btnClick.userInteractionEnabled = true;
【讨论】:
【参考方案2】:如果你使用 UiButton 试试这个
@IBAction func tapButton(sender: Any)
print("Tap")
let btn = sender as! UIButton
btn.isUserInteractionEnabled = false
如果你使用 UIBarButtonItem 试试这个
leftButton = UIBarButtonItem(image: UIImage(named: "backimage")!, style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.toggleLeft))
leftButton.title = "Back"
navigationItem.leftBarButtonItem = leftButton
@objc public func toggleLeft()
print("tap")
leftButton.isEnabled = false
// self.navigationController?.popViewController(animated: true)
【讨论】:
遇到 UIBarbuttonitem 怎么办。它没有“isUserInteractionenabled”属性 好的去看看【参考方案3】:在尝试了启用/禁用按钮和启用/禁用 UI(完全不推荐)等不同方法后,我觉得最好的方法是使用“bool”变量来检查按钮的点击状态。
`
var isButtonTapped = false
@IBAction func tapButton(sender: Any)
print("Tap")
if(!isButtonTapped)
//Perform your operations or page navigations. After the navigation operation set the bool value to true.
isButtonTapped = true;
`
确保在离开 ViewController
时将布尔值重置为 false。您可以在ViewDidDisappear
中执行此操作。
【讨论】:
以上是关于修复 iOS 中的多个按钮单击事件?的主要内容,如果未能解决你的问题,请参考以下文章
需要使用javascript识别iOS编辑键盘中的“完成”按钮单击
在一个视图控制器中使用不同的按钮上传多个图像(iOS、Xcode 9、Swift 4)