如何从数字键盘上调用textFieldShouldReturn Xcode 9 Swift 4

吉娜

我正在尝试在我的应用中设置本地通知。到目前为止,它仍然有效,尽管它仅适用于默认键盘。用户为通知输入的值只能是数字。问题在于数字键盘不包含用户需要按下以发送通知的“完成”按钮。我正在使用textFieldShouldReturn函数。我有一个以编程方式添加的完成按钮,但是我的问题是:

  • 如何在numberPad中创建的按钮内调用textFieldShouldReturn func?

  • 如果无法这样做,是否需要完全更改我的通知?

我有七个开关和文本字段,但出于演示目的,我只会显示一个:

import UIKit
import UserNotifications

class SettingsViewController: UIViewController, UITextFieldDelegate {
    let SCV = SettingsViewController()

    @IBOutlet weak var field1: UITextField!
    @IBOutlet weak var switch1: UISwitch!
    @IBOutlet weak var cell1: UIView!

    let center = UNUserNotificationCenter.current()

    override func viewDidLoad() {
        super.viewDidLoad()

        field1 = self
        field1 = "0"
        field1 = UIColor.white

        if let ebrSwitchState = UserDefaults.standard.value(forKey: "ebrState") as? Bool{
            if switch1state == true{
                switch1(true, animated: true)
                if let text1 = UserDefaults.standard.value(forKey: "ebrValue") as? String{
                    field1 = true;
                    field1 = ebrText
                }
            }
            else{
                switch1.setOn(false, animated: false)
                field1.isEnabled = false
            }
        }
    }

    @IBAction func ebrValueChanged(_ sender: UISwitch) {
        if ebrSwitch.isOn{
            field1.isEnabled = true
            UserDefaults.standard.set(true, forKey: "state1")
        }
        else{
            field1.isEnabled = false
            field1.text = "0"
            UserDefaults.standard.set(false, forKey: "state1")
            center.removePendingNotificationRequests(withIdentifiers: ["1"])
        }
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()

        if (textField.tag == 0){
            UserDefaults.standard.set(ebrField.text, forKey: "1Value")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 0)}
        else if(textField.tag == 1){
            UserDefaults.standard.set(etrField.text, forKey: "2Value")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 1)
        }
        else if(textField.tag == 2){
            UserDefaults.standard.set(fscField.text, forKey: "fscValue")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 2)
        }
        else if(textField.tag == 3){
            UserDefaults.standard.set(jdpField.text, forKey: "jdpValue")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 3)
        }
        else if(textField.tag == 4){
            UserDefaults.standard.set(phrField.text, forKey: "phrValue")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 4)
        }
        else if(textField.tag == 5){
            UserDefaults.standard.set(tcrField.text, forKey: "tcrValue")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 5)
        }
        else if(textField.tag == 7){
            UserDefaults.standard.set(mlsField.text, forKey: "mlsValue")
            LocalPushManager.shared.sendLocalPush(in: 1800, plant: 6)
        }
        else{print("text field area went wrong")}

        return true;
    }

    // Hide keyboard when user touches outside keyboard
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        self.view.endEditing(true)
    }
}
斯蒂芬·陈

当你的键盘类型是它不能称之为数字小

尝试使用它代替它,它可以保存您的代码:)

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    print("Can't be reach")
    return true
}

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    if textField == yourNumberPadTextFiled {
        print("\(String(describing: textField.text))")
        /// listen the string change and do whether you want
    }
    return true
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MFMailComposeViewController,Swift 4,Xcode 9

Xcode 9卡在Swift 4迁移上

更新到Xcode 9和Swift 4

Swift4-Xcode 9 PCH错误

Swift 4-Xcode 9 Beta 4-NSKernAttributeName与NSAttributedStringKey

无法获得 API 调用以及时为 tableview swift 4 xcode 9 运行

如何启用仅数字数字键盘iOS Swift

UnrecognizedSelector 如何在 Xcode9/Swift4 中成为可能?

Xcode 9中的Swift 4-如何在NSAttributedstring中使用boundingrect?

如何设置透明的导航栏?iOS 11 Swift 4 Xcode 9

如何删除XCode9“有向Swift 4的转换可用”警告?

setValuesForKeys在Xcode 9中的Swift 4中不起作用

蒸气不适用于xcode 9和swift 4

使用未声明的类型'Date'Xcode 9 Swift 4

Xcode 9 / Swift 4 AVCaptureMetadataOutput setMetadataObjectTypes使用availableMetadataObjectTypes

使用 Swift 4 和 Xcode 9 获取 JSON 数据

UIView动画Swift 4 Xcode9的问题

Swift 4、Xcode 9:获取并显示用户的位置

如何在viewDidLoad的Swift中显示不带UITextField的标准数字键盘

Swift-如何在文本字段外点击后关闭数字键盘

如何将Core Data添加到现有的Xcode 9 Swift 4 iOS 11项目中?

如何使用 prepareForSegue (Swift 4, Xcode 9) 将 UIButton 的标签(一个 Int)传递给其他 ViewController

使用Swift 4 / Xcode 9从CLPLacemark获取完整的地址字符串

Xcode 9 Swift 4 由于内存问题而终止(返回一个单元格)

使用“新构建系统(预览版)”新功能时出现的问题Xcode 9 Swift 4

在Swift 4 Xcode 9 Beta 6中无法对UIButton进行编程,无法添加目标

Xcode 9 Swift 4 UITableView无法识别的选择器发送到实例

Xcode 9 中的 Swift 4 - 读取核心数据中的数据失败

闭包元组不支持Xcode 9 Swift 4中的解构