ResignFirstResponder无法正常工作

时间:2012-09-28 12:00:26

标签: iphone objective-c resignfirstresponder

-(IBAction)settings:(id)sender
{
    [mileagerate resignFirstResponder];

    [mainView bringSubviewToFront:mileageView];
    mainView.hidden=TRUE;

    [UIView beginAnimations:@"Settings" context:nil];
    [UIView setAnimationDuration:1.0];
    [mainView setFrame:CGRectMake(0, 0, 320, 460)];
    [UIView commitAnimations];
    mileagerate.text = [[NSUserDefaults standardUserDefaults] valueForKey:@"savedstring"];

    mileageView.hidden=FALSE;
}

我在我的应用程序的各个地方使用了resign第一响应者。但是当我单独点击此按钮时,键盘不会消失。如果我点击键盘上的返回键,输入的值就会消失。

8 个答案:

答案 0 :(得分:28)

如果您不知道要辞职的textfield,请使用方法中的以下代码行:

夫特

self.view.endEditing(true)//resign current keyboard 

目标C

[self.view endEditing:YES]; //resign current keyboard 

编辑注意:它将从您当前的resign keybord view开始。

答案 1 :(得分:4)

检查.h文件是否已将 TextFieldDelegate 放在那里。 。有些时候,如果我们不声明其委托功能不能正常工作。

答案 2 :(得分:1)

我认为在设置文本时,textField里程数再次成为第一响应者,所以在方法的最后使用此语句

[mileagerate resignFirstResponder];

答案 3 :(得分:1)

你必须先使用一个 [UIView setAnimationDidStopSelector:@selector(yourMethod)];

然后在“YourMethod”中重新设置键盘。

- (void)yourMethod
{
   [mileagerate resignFirstResponder];
}

答案 4 :(得分:1)

在Swift 2中,您可以使用以下3种不同类型来消除键盘(假设有一个文本字段和一个按钮

    import UIKit

    class ViewController: UIViewController, UITextFieldDelegate {

        @IBOutlet var userInputField: UITextField!

        override func viewDidLoad() {
            super.viewDidLoad()
            //Important if you are using textfieldDelegate
            self.userInputField.delegate = self
        }


        @IBAction func findAgeBtn(sender: UIButton) {

//1. keyboard to disappear when button clicked
            dimissKeyboard()

        }

//2. keyboard to disappear when touched anywhere on the view

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        self.view.endEditing(true)

    }

//Function for option 1
        func dimissKeyboard(){
            self.view.endEditing(true)
}


//3. keyboard to disappear when clicked on the Return key. Don't forget to set the delegate to self
    func textFieldShouldReturn(textField: UITextField) -> Bool {
                    textField.resignFirstResponder()
                return true
            }
        }

答案 5 :(得分:0)

确保已连接返回键以重新签名第一个repsonder

在连接选项卡上将连接更改为“退出时结束”并连接到视图控制器(橙色球)将键盘返回键更改为完成。

答案 6 :(得分:0)

试试这个:

if([mileagerate isFirstResponder])
        [mileagerate resignFirstResponder];

答案 7 :(得分:0)

1.检查UITextFieldDelegate,

class YourClass : UIViewController,UITextFieldDelegate{

2.然后覆盖功能&#34;应该结束编辑&#34;将其返回到是

    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {  
    return true
}