编程 iOS 按钮在第一次点击时执行操作,然后在第二次点击时继续
Programming iOS button to do action on first tap then segue on second tap
我正在构建第 3 方 iOS 应用程序。作为我的主视图控制器的一部分,我让用户可以选择按下按钮 link 直接进入 iOS 键盘设置,这样他们就可以启用我的键盘。当他们 return 回到应用程序时,它会将他们带到下一个视图,在那里他们可以在空文本字段上测试键盘。
当用户点击应用程序上的启用键盘按钮时,我会调用一个 IBAction 来 link 他们到设置应用程序,如下所示:
@IBAction func enableKeyboard(_ sender: Any) {
let settingsUrl = URL(string: "\(UIApplicationOpenSettingsURLString)")!
UIApplication.shared.open(settingsUrl)
}
但是,我同时对我的 textViewController
进行了 segue,因此当用户 return 从设置转到应用程序时,他们会立即转到 textViewController。
我如何才能对我的按钮进行编程,以便第一次点击将它们带到设置,它们 return 进入主视图控制器,然后第二次点击将它们带到下一个视图?
翻转按钮的选中状态,然后在决定做什么时测试这个。
@IBAction func touchUpInside(button: UIButton) {
if !button.isSelected {
button.isSelected = true
// Now open settings
} else {
// Perform segue
}
}
按钮 class 旨在跟踪其自身的状态,因此我认为这比在只需要 2 个状态的视图控制器中让变量跟踪点击更可取。
您可以向您的控制器添加一些状态。
它不仅对 2 个状态('to open settings' 和 'to open next view')有用,您将能够管理更多状态。
您可以在控制器中添加状态变量:
enum ControllerState {
case needSettings, needNext
}
private var state: ControllerState = .needSettings
@IBAction func yourButtonHandler(sender: UIButton) {
switch state {
case .needSettings:
state = .needNext
// Open settings
case .needNext:
// Open next view controller
}
}
我正在构建第 3 方 iOS 应用程序。作为我的主视图控制器的一部分,我让用户可以选择按下按钮 link 直接进入 iOS 键盘设置,这样他们就可以启用我的键盘。当他们 return 回到应用程序时,它会将他们带到下一个视图,在那里他们可以在空文本字段上测试键盘。
当用户点击应用程序上的启用键盘按钮时,我会调用一个 IBAction 来 link 他们到设置应用程序,如下所示:
@IBAction func enableKeyboard(_ sender: Any) {
let settingsUrl = URL(string: "\(UIApplicationOpenSettingsURLString)")!
UIApplication.shared.open(settingsUrl)
}
但是,我同时对我的 textViewController
进行了 segue,因此当用户 return 从设置转到应用程序时,他们会立即转到 textViewController。
我如何才能对我的按钮进行编程,以便第一次点击将它们带到设置,它们 return 进入主视图控制器,然后第二次点击将它们带到下一个视图?
翻转按钮的选中状态,然后在决定做什么时测试这个。
@IBAction func touchUpInside(button: UIButton) {
if !button.isSelected {
button.isSelected = true
// Now open settings
} else {
// Perform segue
}
}
按钮 class 旨在跟踪其自身的状态,因此我认为这比在只需要 2 个状态的视图控制器中让变量跟踪点击更可取。
您可以向您的控制器添加一些状态。 它不仅对 2 个状态('to open settings' 和 'to open next view')有用,您将能够管理更多状态。
您可以在控制器中添加状态变量:
enum ControllerState {
case needSettings, needNext
}
private var state: ControllerState = .needSettings
@IBAction func yourButtonHandler(sender: UIButton) {
switch state {
case .needSettings:
state = .needNext
// Open settings
case .needNext:
// Open next view controller
}
}