【发布时间】:2011-12-09 20:36:47
【问题描述】:
在每个视图中,我都会实例化一个“KeyHandler”对象,使应用程序能够处理物理键盘输入。
当对象被实例化时,它会创建一个隐藏的 textField 作为第一响应者。
在实例化过程中会调用以下代码:
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(pollTextField:) userInfo:nil repeats: YES];
投票文本字段如下所示:
-(void) pollTextField:(NSTimer*) timer{
NSString * str = self.textField.text;
NSString * lastChar;
if (!str || [str isEqualToString:@""]) {
//no new text
}else{
lastChar = [str substringFromIndex:[str length] - 1];
[self determineAction:lastChar];
lastChar = @"";
str = nil;
}
self.textField.text = @"";
}
当我在物理键盘上按 u 时, self.textField.text == u 。但是,textField 不会变为空白——即使我将其设置为 @""。第二次 pollTextField 被称为 self.textField.text == uu,第三次是 == u 并且它在 u 和 uu 之间循环,即使我没有按任何键。另一个奇怪的是,第一次调用 pollTextField 时 self 总是包含所有正确的实例变量,下一次调用时它们就丢失了,即使 self 仍然是 KeyHandler 实例并且仍然具有相同的内存地址。
编辑:这是我创建 textField 和 keyhandler 的方式:
UITextField* textField = [[UITextField alloc] init];
[self.view addSubview:textField];
keyHandler = [[KeyHandler alloc] initWithTextField:textField];
keyHandler.delegate = self;
[textField release];
【问题讨论】:
标签: ios ios5 uitextfield nstimer