textFieldDidBeginEditing - 不工作

时间:2012-12-04 10:11:08

标签: iphone objective-c ios

我的页眉文件

MyClass.h
@interface MyClass : UIViewController<UITextFieldDelegate>
{
}
@property (retain, nonatomic) IBOutlet UITextField *customValue;

MyClass.m

- (void)viewDidLoad
{
    customValue.delegate=self;
}
- (void)textFieldDidBeginEditing:(UITextField *)customValue
{
    NSLog(@"custom tips value %@",customValue.text);
}

我的NSLog正在打印消息,但customValue.text未显示,并且显示为空。

编辑1 当用户输入值

时,我需要获取textfiled中输入的值

6 个答案:

答案 0 :(得分:2)

textFieldDidBeginEditing正如其名称所示,当您开始在textField上进行编辑时,它将起作用。

要完成您的要求,您需要使用shouldChangeCharactersInRange委托方法。

- (BOOL)textField:(UITextField *)e shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *substring = textField.text;
    substring = [substring stringByAppendingString:string];
    NSLog(@"Text : %@",substring);
    return YES;
}

<强> textFieldDidBeginEditing

  

告诉代理人开始为指定的文本字段进行编辑。

     

- (void)textFieldDidBeginEditing:(UITextField *)textField Parameters

     

<强>的TextField

The text field for which an editing session began.
     

<强>讨论

     

此方法仅通知委托指定的文本字段   成为第一个响应者。您可以使用此方法更新您的   代表的国家信息。例如,您可以使用此方法   显示编辑时应该可见的叠加视图。

     

委托实现此方法是可选的。   可用性

Available in iOS 2.0 and later.
     

在UITextField.h中声明

<强>文本字段:shouldChangeCharactersInRange:replacementString:

  

询问代表是否应更改指定的文本。

     

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

     

参数

     

<强>的TextField

The text field containing the text.
     

<强>范围

The range of characters to be replaced 
     

<强>字符串

The replacement string. 
     

返回值

     

如果应替换指定的文本范围,则为YES;否则,不   保留旧文本。讨论

     

只要用户键入新文本,文本字段就会调用此方法   文本字段中的字符或删除现有字符。   可用性

Available in iOS 2.0 and later.
     

在UITextField.h中声明

有关详情UITextFieldDelegate

答案 1 :(得分:1)

这是因为在用户第一次触摸textField时会调用textFieldDidBeginEditing:

要在用户更改文本时获取textField的文本,请将“编辑已更改”事件连接到文件所有者的IBAction。

答案 2 :(得分:1)

使用此

- (BOOL)textField:(UITextField *)customTipsValue shouldChangeCharactersInRange:(NSRange)range 
 replacementString:(NSString *)string
{
NSLog(@"textfield value %@",customTipsValue.text);
return YES;
}// return NO to not change text

答案 3 :(得分:0)

您是否注意到方法

- (void)textFieldDidBeginEditing:(UITextField *)customTipsValue

开始编辑textField时调用,而不是在输入字符时调用。

点击此处查看更多信息:

UITextField Reference

答案 4 :(得分:0)

刚开始编辑模式时,设置清除文本字段为否。

- (void)viewDidLoad
{
       customValue.delegate=self;
       [customValue setClearsOnBeginEditing:NO];// Add this line
}

答案 5 :(得分:0)