【发布时间】:2014-09-02 18:31:04
【问题描述】:
我面临着有史以来最奇怪的错误(我的应用程序或 IOS 7.1 中的以太币)。 几个小时后,我设法创建了一个简单的应用程序来演示这个问题。
两个 UITextField - 从界面生成器拖放并连接到 t1、t2。 视图控制器:
@implementation ViewController
@synthesize t1;
@synthesize t2;
#pragma mark - UITextFieldDelegate
-(void)textFieldDidBeginEditing:(UITextField *)iTextField {
NSLog(@"textFieldDidBeginEditing");
[iTextField performSelector:@selector(selectAll:) withObject:iTextField afterDelay:0.0];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
return YES;
}
- (void)viewDidLoad
{
[super viewDidLoad];
t1.delegate = self;
t2.delegate = self;
}
@end
同时点击 t1 和 t2 时,两个 textField 都会成为无限循环中的第一响应者! 当省略执行选择器语句或 textField:shouldChangeCharactersInRange: 实现时,问题就消失了。
谁能解释为什么会这样?
【问题讨论】:
-
试试
[iTextField selectAll:self];怎么样? -
它导致问题消失但又产生了另一个问题。如果 textField 包含文本,点击 textField 选择所有文本。关闭键盘并再次点击时,文本不会再次被选中。
标签: ios objective-c uitextfield selectall