gpt4 book ai didi

ios - 在 UITextField 上执行选择器 "selectAll"时出现奇怪的问题

转载 作者:行者123 更新时间:2023-11-29 02:49:46 25 4
gpt4 key购买 nike

我正面临有史以来最严重的错误(ether 在我的应用程序或 IOS 7.1 中)。几个小时后,我设法创建了一个简单的应用程序来演示问题。

两个 UITextField - 从界面生成器中拖放并连接到 t1、t2。 View Controller :

@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 都会成为无限循环中的第一响应者!当省略 PerformSelector 语句或 textField:shouldChangeCharactersInRange: 实现时,问题就消失了。

谁能解释为什么会这样?

最佳答案

编辑:同时将每个 UITextField 的 exclusiveTouch 属性设置为:YES 以防止它们同时编辑。

- (void)viewDidLoad
{
[super viewDidLoad];
t1.exclusiveTouch = YES;
t2.exclusiveTouch = YES;
t1.delegate = self;
t2.delegate = self;
}

- (void)textFieldDidBeginEditing:(UITextField *)iTextField
{
[iTextField performSelector:@selector(selectAll:) withObject:nil afterDelay:0.0];
}

或者更简单地说,不使用 exclusiveTouch 属性:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)iTextField
{
if (iTextField == t1 && t2.isFirstResponder == NO)
{
return YES;
}
else if (iTextField == t2 && t1.isFirstResponder == NO)
{
return YES;
}

return NO;
}

关于ios - 在 UITextField 上执行选择器 "selectAll"时出现奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24709462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com