我已经连接了UITextField并编写了这段代码
-(void)viewDidLoad
{
[txtName addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}
-(void)textFieldDidChange :(UITextField *)theTextField{
NSLog(@"Text changed");
}
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField==txtName)
{
[self.view endEditing:YES];
[self performSelector:@selector(ShowNames) withObject:nil afterDelay:0.1];
return NO;
}
return YES;
}
但-(void)textFieldDidChange :(UITextField *)theTextField{
未被解雇
无法理解我的错误在哪里
任何帮助将不胜感激
答案 0 :(得分:0)
替换代码方法
-(void)textFieldDidChange :(UITextField *)theTextField{
NSLog(@"Text changed");
}
与
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
答案 1 :(得分:0)
如果你想要UITextField事件,你应该使用UITextFieldDelegate
在您的.h文件中采用UITextFieldDelegate
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITextFieldDelegate>
然后在你的.m文件中
- (void)viewDidLoad
{
[super viewDidLoad];
[_txtName setDelegate:self];
}
如果您有任何问题,请告诉我
答案 2 :(得分:0)
您的想法是正确的,但您的问题属于-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
方法。
现在,在编辑此方法之前,如果方法返回NO,那么-(void)textFieldDidChange :(UITextField *)theTextField
方法将不被调用。
您的if语句测试以查看应该开始编辑的textField是否与txtName相同。如果是,则返回 NO 而不是 YES 。我认为你只需要交换你的NO和YES,你就会变成金色。
试试这个:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
if(textField==txtName)
{
[self.view endEditing:YES];
[self performSelector:@selector(ShowNames) withObject:nil afterDelay:0.1];
return YES;
}
return NO;
}