【问题标题】:wait_fences: failed to receive reply: 10004003wait_fences:未能收到回复:10004003
【发布时间】:2011-05-02 14:41:45
【问题描述】:

我有一个正在创建的警报视图,其中包含一个文本字段。当我通过提交或取消按钮关闭警报视图时,我在控制台中收到 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 语句来尝试找出字段是否是第一响应者,但我什么也没得到。

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

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

【问题讨论】:

    标签: iphone ios4


    【解决方案1】:

    所以我想我已经弄清楚了。

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

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

    【讨论】:

      【解决方案2】:

      您是否尝试过删除文本字段,例如:

      - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
      
      [[alertView.subviews objectAtIndex:0] removeFromSuperview];
      
      
      }
      

      【讨论】:

      • 感谢您的快速响应。我把它放进去,现在我得到一个错误,说“空值没有被忽略,因为它应该是”。我觉得这可以帮助解决问题,但我真的不明白它的含义或我现在需要从哪里开始寻找。我尝试四处搜索,但似乎出现了各种问题。谢谢。
      • 把它放进去只会给我同样的错误(wait_fences ...)。有什么办法可以找到第一响应者是什么?我以为我正在让文本字段成为第一响应者,但似乎不是。
      猜你喜欢
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2023-03-22
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多