2010-08-04 15 views
5

eklemeye alterview numaralı telefonuma eklemeye çalışıyorum. Kullanıcı metin girmeye çalıştığında, alterview'un klavyenin üst üste gelmemesi için bir miktar yukarı kaydırması beklenir ve bitmiş tuşa basıldığında klavyenin kaybolması ve alertview'un geri kayması gerekir.iphone-sdk: UIAlertview'e bir metin alanı eklemek iOS 4'te çalışmıyor mu?

iOS 3.1.2'de (ve ayrıca 3.2'de) çalıştırıldığında her şey düzgün çalışıyor ancak iOS 4 altında çalıştırmayı denediğimde alertview yanlış konumda görüntülenir ve klavye kaybolmaz. Baska öneri? İşte benim kod: Ben (henüz) hiçbir ipucu var

- (void)addItemAction{ 

workoutName = [[UIAlertView alloc] initWithTitle:@"New Workout" message:@"Insert the name of your new workout:\n    " delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Done", nil]; 
workoutName.cancelButtonIndex = 0; 
UITextField *titleField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 90.0, 260.0, 25.0)]; 
titleField.delegate = self; 
titleField.borderStyle = UITextBorderStyleRoundedRect; 
titleField.returnKeyType = UIReturnKeyDone; 
[workoutName addSubview:titleField]; 
[workoutName show]; 


} 
- (BOOL)textFieldShouldReturn:(UITextField *)textField { 


[textField resignFirstResponder]; 
return YES; 

} 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 

[UIView beginAnimations:nil context:NULL]; 
CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, -70.0); 
[workoutName setTransform:myTransform]; 
[UIView commitAnimations]; 

} 

- (void)textFieldDidEndEditing:(UITextField *)textField { 

[UIView beginAnimations:nil context:NULL]; 
CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0.0, 0.0); 
[workoutName setTransform:myTransform]; 
[UIView commitAnimations]; 
self.newWorkout = textField.text; 

} 

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

if (buttonIndex == 1) { 
    if (self.newWorkout != @"TestWorkout"){ 
    [self.workoutPlanArray insertObject:[NSDictionary dictionaryWithObjectsAndKeys:self.newWorkout, @"titleValue", @"04.08.10", @"dateValue", nil] atIndex:counter]; 
    counter++; 
    [self.tableView reloadData]; 
    } 
} 


} 

cevap

5

Ayrıca, ioS ​​4.0 uygulamasında da & numaralı uygulamamdaki bir metin alanı ile uyarı görünümü kullanıyorum. İyi çalışıyor. İşte

örnek kod: _

-(void)showAlert{ 

showAlert=YES; //boolean variable 

createNewAlert =[[UIAlertView alloc] initWithTitle:@"ADD item" message:@"Put it blank textfield will cover this" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil]; 

UITextField *txtName = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)]; 
[email protected]""; 
[txtName setBackgroundColor:[UIColor whiteColor]]; 
[txtName setKeyboardAppearance:UIKeyboardAppearanceAlert]; 
[txtName setAutocorrectionType:UITextAutocorrectionTypeNo]; 

[txtName setTextAlignment:UITextAlignmentCenter]; 
[createNewAlert addSubview:txtName]; 


[createNewAlert show]; 
} 

Ayrıca Klavye bildirimleri denir aşağıdaki iki yöntemi başvurabilir.

-(void)keyboardWillShow: (id) notification { 

if(showAlert==YES) 
{ 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    [createNewAlert setTransform:CGAffineTransformMakeTranslation(0,-60)]; 
    [createNewAlert show]; 
    [UIView commitAnimations]; 
} 

} Burada

-(void)keyboardWillHide: (id) notification { 

if(showAlert==YES) 
{ 


     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.3]; 
     [createNewAlert setTransform:CGAffineTransformMakeTranslation(0,+60)]; 

     [UIView commitAnimations]; 

} 
} 
0

uyarının yerleştirilmelerini, ancak alertView için textFieldShouldReturn uygulanmasında resignFirstResponder göndermeyi deneyebilirsiniz. Ayrıca, bu klavyenin kaybolmasını sağlamalıdır (tam olarak nedenini bilmeme rağmen).

1

iOS 4'te de bu sorunla karşılaştım. Üzerinde bir çeviri yapmaya çalıştım ve çevirinin önemli olmadığını fark ettim, sadece bir çeviri yapıldı.

myAlert = my AlertView 
CGAffineTransform rotate = CGAffineTransformMakeTranslation(0.0f, 0.0f); 
myAlert.transform = rotate; 
[myAlert show]; 
[myAlert release]; 

Çeviri'den tetiklenen bir geri arama olmalıdır, ancak bu sorunu giderir. IOS 4.0 öncesi gibi davranmalıdır.

0

xib dosyasını açın, UIView'a tıklayın ve "User Interaction Enabled" onay kutusunun işaretlendiğinden emin olun.