单击完成按钮时调用 UITextField 方法

问题描述 投票:0回答:7

我在

UITableViewCell

中有一个文本字段

当我直接单击文本字段时,会调用此方法:

-(void)editingChanged:(UITextField *)sender

这是我的代码

cellForRowAtIndexPath

[cell.ProductQuantityTextField addTarget:self action:@selector(editingChanged:)forControlEvents:UIControlEventEditingChanged];


-(void) editingChanged:(UITextField *)sender
{
    NSLog( @"text changed: %@",cell.ProductQuantityTextField.text);
    [self ProdcutDirectSetToCartAPICall];
}

我想要这样,当我单击文本字段时,我更改文本字段的值,然后单击键盘的“完成”按钮,当时我想调用

UITextField
方法

ios objective-c uitableview uitextfield
7个回答
2
投票

shouldReturn
委托方法就是您正在寻找的:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    // do something
    return YES;
}

1
投票

有两种方法可以做到这一点

1.) 您可以执行 UIControlEventEditingDidEndOnExit 事件。

2.) 或者您也可以在文本字段 retun 中实现您的方法

<UITextfieldDelegate> //in yourController.h file

//yourController.m
- (BOOL)textFieldShouldReturn:(UITextField *)textField 
 {

 //do your code here.     

return YES;
}

这两种方法都可以帮助您解决问题。


0
投票

你可以检查UItextfield的shouldreturn方法调用

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    NSLog( @"text changed: %@",textField.text);
    [self ProdcutDirectSetToCartAPICall];
    return YES;
}

0
投票

在课堂上实施

<UITextFieldDelegate>
协议,设置

ProductQuantityTextField.delegate = self;

并使用

- (void)textFieldDidEndEditing:(UITextField *)textField {
   [textField resignFirstResponder];
    NSLog(@"Textfield text %@", textField.text);
   [self ProdcutDirectSetToCartAPICall];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
   [textField resignFirstResponder];
    return YES;
}

0
投票

我检查了下面的代码,它工作正常

在 cellForRowAtIndexPath 中我添加了以下代码

 cell.ProductQuantityTextField.delegate = self;

 cell.ProductQuantityTextField.tag = indexPath.row; //If you want you can give tag here

 [cell.ProductQuantityTextField addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged];


-(void)editingChanged:(UITextField *)field
{

    NSLog( @"text changed: %@",field.text);

}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {


    NSLog( @"textFieldShouldReturn: %@",textField.text);

   [textField resignFirstResponder];

   //If you need cell
    TableViewCellName *cell = (TableViewCellName*) [[textField superview]superview];

    NSLog( @"text changed: %@",cell.ProductQuantityTextField.text);

   [self ProdcutDirectSetToCartAPICall];

   return YES;
}

0
投票

我认为每次更改

forControlEvents:UIControlEventEditingChanged
中的某些内容时都会调用
UITextField
。如果您想在用户单击键盘上的
'Done'
按钮时调用该方法,请尝试更改行

[cell.ProductQuantityTextField addTarget:self action:@selector(editingChanged:)forControlEvents:UIControlEventEditingChanged];

[cell.ProductQuantityTextField addTarget:self action:@selector(editingChanged:)UIControlEventEditingDidEnd];

0
投票

现在真的这么简单,幸运的是

addAction({
        UIAction { [weak self] _ in
            print("that worked!")
            self?.field.resignFirstResponder()
        }
    }(), for: .editingDidEndOnExit)

提示

editingDidEndOnExit
,不是
editingDidEnd

© www.soinside.com 2019 - 2024. All rights reserved.