2010-10-29 35 views
1

我有一個正在創建的帶有文本框的alertview。當我通過提交或取消按鈕關閉alertview時,我得到控制檯中的wait_fences錯誤。它不會崩潰,或者我還沒有能夠使它崩潰,但id真的想弄清楚發生了什麼。wait_fences:未能收到回覆:10004003

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]; 

我環顧四周網上,試圖找出問題是,有些人提到了resigningFirst響應。我添加到 - (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"); 
} 

有沒有人有什麼建議我可以做錯了什麼?

回答

1

,所以我認爲香港專業教育學院想通弄明白了。

看來,當我從alertView:didDismissWithButtonIndex調用[字段resignFirstResponder]時,firstResponder不會真的辭職,並且在alertView被刪除後鍵盤將被強制排出一兩秒鐘。但是當我從alertView中調用[field resignFirstResponder]時:clickedButtonAtIndex它會像它應該的那樣退出firstResponder。

我也遇到了一個問題,即在移除之前,alertview會向下移動,以補償鍵盤不在那裏,但爲了解決這個問題,我創建了一個函數,它的唯一目的是調用[field resignFirstResponder]並調用從alertView:clickedButtonAtIndex並延遲它運行0.2秒。

0

你嘗試像刪除文本框:

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

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


} 
+0

感謝您的快速響應。我把它放進去,現在我得到一個錯誤,說'虛擬值沒有被忽略,因爲它應該是'。我有一種感覺,這可以幫助回答這個問題,但我真的不明白這意味着什麼,或者我需要現在開始尋找。我試着四處搜尋,但它似乎出現了各種各樣的問題。謝謝。 – 2010-10-30 02:53:40

+0

對不起,編輯了我的答案。 – 2010-10-30 12:41:28

+0

把這只是給了我同樣的錯誤(wait_fences ...)。有什麼辦法可以找到第一響應者?我以爲我讓textfield成爲第一響應者,但它似乎不是。 – 2010-10-31 01:24:21

相關問題