wait_fences:未收到回复:10004003

时间:2010-10-29 20:02:12

标签: iphone ios4

我有一个使用其中的文本字段创建的警报视图。当我通过提交或取消按钮关闭alertview时,我在控制台中收到wait_fences错误。它没有崩溃,或者我没有能够让它崩溃,但我真的想知道发生了什么。

    alert = [[UIAlertView alloc] 
                          initWithTitle:@"Lookup" 
                          message:@"\n\n\n" 
                          delegate:self 
                          cancelButtonTitle:@"Cancel" 
                          otherButtonTitles:@"Submit", nil];

label = [[UILabel alloc] initWithFrame:CGRectMake(12, 40, 260, 25)];
label.font = [UIFont systemFontOfSize:16];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor clearColor];
label.shadowColor = [UIColor blackColor];
label.shadowOffset = CGSizeMake(0, -1);
label.textAlignment = UITextAlignmentCenter;
label.text = @"Enter 10-Digit ISBN Number";
[alert addSubview:label];

field = [[UITextField alloc] initWithFrame:CGRectMake(16, 83, 252, 25)];
field.font = [UIFont systemFontOfSize:18];
field.backgroundColor = [UIColor whiteColor];
field.keyboardAppearance = UIKeyboardAppearanceAlert;
field.keyboardType = UIKeyboardTypeNumberPad;
field.borderStyle = UITextBorderStyleBezel;
field.delegate = self;
[field becomeFirstResponder];
[alert addSubview:field];
[alert show];

我在网上四处寻找,试图弄清问题是什么,有些人提到辞职第一响应者。我添加到 - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex但它没有做任何事情。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
[field resignFirstResponder]
if (buttonIndex == 1) {
    NSLog(@"Submit");
} else {
    NSLog(@"Cancel");
}

}

然后我添加了一个if语句来尝试找出field是否是第一个响应者而我什么也没得到。

if([field isFirstResponder]) {
     NSLog(@"field isFirstResponder");
}

有没有人对我可能做错了什么有任何建议?

2 个答案:

答案 0 :(得分:1)

所以我想我已经明白了。

似乎当我从alertView:didDismissWithButtonIndex调用[field resignFirstResponder]时,firstResponder不会真正辞职,并且在删除alertView之后键盘将被强制退出一两秒。但是当我从alertView:clickedButtonAtIndex调用[field resignFirstResponder]时,它会像它应该的那样重新签名firstResponder。

我也遇到了一个问题,因为在取消之前,alertview会向下移动,以补偿键盘不在那里,但为了解决这个问题,我创建了一个函数,其唯一目的是调用[field resignFirstResponder]并从中调用alertView:clickedButtonAtIndex并将其延迟运行.2秒。

答案 1 :(得分:0)

您是否尝试删除文字字段:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {

[[alertView.subviews objectAtIndex:0] removeFromSuperview];


}