Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-未触发UIButton事件_Ios_Swift_Uibutton - Fatal编程技术网

Ios Swift-未触发UIButton事件

Ios Swift-未触发UIButton事件,ios,swift,uibutton,Ios,Swift,Uibutton,我正在将基于PUREMVC的应用程序从objective-c重新编码为Swift 我现在正在创建一个表单和提交按钮,但它不会触发任何事件。无论是正在编辑的文本字段,还是正在按下的按钮。文本字段上的键盘仍会在触摸屏上显示,但不会触发任何事件。这是我的密码: class LoginViewController: UIViewController, UITextFieldDelegate{ var emailTF: UITextField! var passwordTF: UITex

我正在将基于PUREMVC的应用程序从objective-c重新编码为Swift

我现在正在创建一个表单和提交按钮,但它不会触发任何事件。无论是正在编辑的文本字段,还是正在按下的按钮。文本字段上的键盘仍会在触摸屏上显示,但不会触发任何事件。这是我的密码:

class LoginViewController: UIViewController, UITextFieldDelegate{

    var emailTF: UITextField!
    var passwordTF: UITextField!
    var submitBTN: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.view.backgroundColor = UIColor.redColor()

        // EMAIL
        self.emailTF = ViewElements.formTextField(FORM_DEFAULT_USERNAME)
        self.emailTF.tag = 100
        self.view.addSubview(self.emailTF)

        // PASSWORD
        self.passwordTF = ViewElements.formTextField(FORM_DEFAULT_PASSWORD)
        self.passwordTF.tag = 200
        self.view.addSubview(self.passwordTF)

        // SUBMIT
        self.submitBTN = ViewElements.formButtonSubmit(FORM_SUBMIT_TEXT)
        self.submitBTN.tag = 300
        self.submitBTN.addTarget(self, action: "pressedButton", forControlEvents: UIControlEvents.TouchUpInside)
        self.submitBTN.userInteractionEnabled = true
        self.view.userInteractionEnabled = true
        self.view.addSubview(self.submitBTN)


        // layout

        let tX = (SCREENWIDTH-NAVI_WIDTH)*0.5
        let tY = SCREENHEIGHT*0.3

        self.emailTF.frame = CGRect(x: tX, y: tY-NAVI_HEIGHT*1.2, width: NAVI_WIDTH, height: NAVI_HEIGHT)

        self.passwordTF.frame = CGRect(x: tX, y: tY+NAVI_HEIGHT*0.2, width: NAVI_WIDTH, height: NAVI_HEIGHT)

        self.submitBTN.frame = CGRect(x: tX, y: tY+NAVI_HEIGHT*1.6, width: NAVI_WIDTH, height: NAVI_HEIGHT)


        // events
        self.emailTF.delegate = self
        self.passwordTF.delegate = self

        print("---1---")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    /*
    var visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light)) as UIVisualEffectView
    visualEffectView.frame = self.introImage.bounds
    self.introImage.addSubview(visualEffectView)
    visualEffectView.alpha = 0.0
    */

    // FORM EVENTS


    func textFieldDidBeginEditing(textField: UITextField) {
      print ("---")
    }

    func textFieldShouldEndEditing(textField: UITextField) -> Bool {
        print ("---")
        return false
    }


    func pressedButton(sender: UIButton!) {
        print("::")
    }   
}
如果您想查看我用于创建元素的Util:

class func formTextField(myText: String) -> UITextField
{
    let newTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: NAVI_WIDTH, height: NAVI_HEIGHT));
    newTextField.text = myText as String
    newTextField.borderStyle = UITextBorderStyle.Line
    newTextField.backgroundColor = UIColor.colorWithAlphaComponent(UIColor.whiteColor())(0.5)
    newTextField.textAlignment = NSTextAlignment.Center

    return newTextField
}

class func formButtonSubmit(myText: String) -> UIButton
{
    let newButton: UIButton = UIButton()
    newButton.setTitle(myText, forState: .Normal)
    newButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
    newButton.titleLabel!.font = UIFont(name: "InterstateCondensed", size: 45)
    newButton.titleLabel!.textColor = UIColor.blackColor()
    newButton.titleLabel!.textAlignment = .Center
    newButton.backgroundColor = UIColor.colorWithAlphaComponent(UIColor.whiteColor())(0.8)
    newButton.frame = CGRect(x: 0, y: 0, width: NAVI_WIDTH, height: NAVI_HEIGHT)

    return newButton
}

真的很奇怪,没有任何事件发生。有人吗?

您可以在调用操作时使用
选择器

self.submitBTN.addTarget(self, action: Selector("pressedButton"), forControlEvents: UIControlEvents.TouchUpInside)
对于textField问题(我在这里猜测),问题可能是您在添加子视图后正在安装委托

    // PASSWORD
    self.passwordTF = ViewElements.formTextField(FORM_DEFAULT_PASSWORD)
    self.passwordTF.tag = 200
    self.passwordTF.delegate = self
    self.view.addSubview(self.passwordTF)

    // SUBMIT
    self.submitBTN = ViewElements.formButtonSubmit(FORM_SUBMIT_TEXT)
    self.submitBTN.tag = 300
    self.submitBTN.addTarget(self, action: "pressedButton", forControlEvents: UIControlEvents.TouchUpInside)
    self.submitBTN.userInteractionEnabled = true
    self.view.userInteractionEnabled = true
    self.emailTF.delegate = self
    self.view.addSubview(self.submitBTN)

调用操作时,可以使用
选择器

self.submitBTN.addTarget(self, action: Selector("pressedButton"), forControlEvents: UIControlEvents.TouchUpInside)
对于textField问题(我在这里猜测),问题可能是您在添加子视图后正在安装委托

    // PASSWORD
    self.passwordTF = ViewElements.formTextField(FORM_DEFAULT_PASSWORD)
    self.passwordTF.tag = 200
    self.passwordTF.delegate = self
    self.view.addSubview(self.passwordTF)

    // SUBMIT
    self.submitBTN = ViewElements.formButtonSubmit(FORM_SUBMIT_TEXT)
    self.submitBTN.tag = 300
    self.submitBTN.addTarget(self, action: "pressedButton", forControlEvents: UIControlEvents.TouchUpInside)
    self.submitBTN.userInteractionEnabled = true
    self.view.userInteractionEnabled = true
    self.emailTF.delegate = self
    self.view.addSubview(self.submitBTN)

尝试将
操作:“pressedButton”(
)替换为
操作:“pressedButton:”,


或者,如果不使用
pressedButton
方法,请尝试删除该方法的参数。

尝试将
操作:“pressedButton”替换为
操作:“pressedButton:”,


或者,如果您不使用
pressedButton
方法,请尝试删除该方法的参数。

您忘记在
pressedButton之后添加
,这应该可以解决您的问题:

self.submitBTN.addTarget(self, action: Selector("pressedButton:"), forControlEvents: .TouchUpInside)

此外,万能的Xcode为您提供了
故事板
,这将使您的生活更加轻松,您不需要从代码中设置所有参数,即使委托和数据源是从代码中设置的

您忘记了在按下
按钮后添加
,这将解决您的问题:

self.submitBTN.addTarget(self, action: Selector("pressedButton:"), forControlEvents: .TouchUpInside)

此外,万能的Xcode为您提供了
故事板
,这将使您的生活更加轻松,您不需要从代码中设置所有参数,甚至委托和数据源也是从代码中设置的

我想我已经发布了答案。问题是我如何在不使用故事板的情况下(我不喜欢)将viewcontroller添加到窗口。以上所有代码想法都是正确的,但不能解决我的问题。我是这样修复的:

window.rootViewController = rootView
        window.makeKeyAndVisible()

就这么简单。谢谢大家。

我想我已经发布了答案。问题是我如何在不使用故事板的情况下(我不喜欢)将viewcontroller添加到窗口。以上所有代码想法都是正确的,但不能解决我的问题。我是这样修复的:

window.rootViewController = rootView
        window.makeKeyAndVisible()

就这么简单。谢谢大家。

您在控件中添加了选择器了吗?在尝试了下面的所有内容后,没有任何帮助,我将整个视图代码复制到了一个新的swift项目中,一切正常。所以我还没有疯。但问题是,是什么阻止了viewcontroller的这种行为?我想让它在我的PuremVC框架内工作。你是如何将它连接到你的故事板的?@MarcusKirsch你确定按钮上没有覆盖任何内容吗?请在这里签出我的答案你在控件中添加了选择器了吗?在尝试了下面的所有内容后,没有任何帮助,我将整个视图代码复制到了一个新的swift项目中,一切正常。所以我还没有疯。但问题是,是什么阻止了viewcontroller的这种行为?我想让它在我的PuremVC框架内工作。你如何将它连接到你的故事板?@MarcusKirsch你确定按钮上没有任何内容吗?请在这里检查我的答案,并反复尝试。没有区别。也有委托声明,没有区别。反复尝试选择器。没有区别。上面也有委托声明,没有区别。试过了,什么都没解决。我喜欢写些乱七八糟的东西,所以我讨厌故事板。我有一个编辑,纯粹而简单。在我所有的objective-c项目中,使事情变得更干净,并且对我来说工作完美。试过了,什么都没有解决。我喜欢写些乱七八糟的东西,所以我讨厌故事板。我有一个编辑,纯粹而简单。在我所有的objective-c项目中,让事情变得更干净,工作也更完美。