以编程方式调用 textFieldShouldReturn [英] Programmatically call textFieldShouldReturn

查看:13
本文介绍了以编程方式调用 textFieldShouldReturn的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当前项目运行在cocos2d v2下.

The current project runs under cocos2d v2.

我有一个简单的 UITextField 添加到 CCLayer.

I have a simple UITextField added to a CCLayer.

每当用户触摸文本字段时,就会出现一个键盘.

Whenever, the user touch the textField, a keyboard appears.

然后当用户触摸返回"按钮时,键盘消失并清除输入.

Then when the user touch the "return" button, the keyboard disappear and clears the input.

我试图做的是当用户触摸 UITextField 之外的任何地方时做同样的事情.

What I tried to do is to make the same thing when the user touches anywhere outside the UITextField.

我确实找到了一种方法并且它有效:

I did find a method and it works :

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
{
    UITouch* touch = [touches anyObject];
    if(touch.view.tag != kTAGTextField){
        [[[[CCDirector sharedDirector] view] viewWithTag:kTAGTextField] resignFirstResponder];
    }
}

但是,这个方法并没有调用函数:

However, this method doesn't call the function :

- (BOOL)textFieldShouldReturn:(UITextField *)textField

我用这个函数做一些计算并清除输入.因此,当文本字段为resignFirstResponder"时,我希望 ccTouchesBegan 输入此 textFieldShouldReturn.

I use this function to do some calculation and clear the input. Therefore, I would like ccTouchesBegan to enter this textFieldShouldReturn when the textfield is "resignFirstResponder".

推荐答案

来自 苹果文档:

textFieldShouldReturn:询问委托文本字段是否应处理按下返回按钮.

textFieldShouldReturn: Asks the delegate if the text field should process the pressing of the return button.

所以它只有在用户点击返回按钮时才会被调用.

So it is only called when the user taps the return button.

我宁愿创建一个用于计算和输入清除的方法,并在需要时调用该方法.示例:

I would rather create a method for the calculation and input clearing, and call that method whenever you want it to be called. Example:

- (void)calculateAndClearInput {
    // Do some calculations and clear the input.
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    // Call your calculation and clearing method.
    [self calculateAndClearInput];
    return YES;
}

- (void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    UITouch* touch = [touches anyObject];
    if (touch.view.tag != kTAGTextField) {
        [[[[CCDirector sharedDirector] view] viewWithTag:kTAGTextField] resignFirstResponder];
        // Call it here as well.
        [self calculateAndClearInput];
    }
}

这篇关于以编程方式调用 textFieldShouldReturn的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆