2012-01-24 48 views
14

Tôi đang sử dụng một trong các tính năng iOS 5 mới cho UIAlertView. Tôi tạo ra một UIAlertView như thế này:UIAlertViewStylePlainTextInput return key delegate

UIAlertView *scanCode = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Some Title", @"") message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:NSLocalizedString(@"OK", @""), nil]; 
     [scanCode setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
     scanCode.tag = 1234; 
     [scanCode show]; 
     [scanCode release]; 

Các đại biểu tôi sử dụng bây giờ là:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (alertView.tag == 1234) { 
     if (buttonIndex == 1) 
     { 
      //do something 
      } 
     } 
    } 
} 

Bây giờ tôi muốn mô phỏng các phím Enter, vì vậy khi thị do người dùng quay trở lại trên bàn phím điều tương tự sẽ xảy ra khi nhấn nút OK của cảnh báo. Tôi có thể làm cái này như thế nào?

Cảm ơn trước!

Trả lời

29

Hãy chắc chắn rằng lớp học của bạn phù hợp với các giao thức <UITextFieldDelegate>, làm cho UIAlertView một tài sản cho lớp học của bạn và thêm các dòng sau vào mã thiết lập của bạn ...

self.scanCode = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Some Title", @"") message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:NSLocalizedString(@"OK", @""), nil]; 
[self.scanCode setAlertViewStyle:UIAlertViewStylePlainTextInput]; 
self.scanCode.tag = 1234; 
//add this... 
[[self.scanCode textFieldAtIndex:0] setDelegate:self]; 
[self.scanCode show]; 

Bằng cách trở thành các đại biểu cho trường nhập văn bản bạn có thể tìm hiểu khi nào phím quay lại trên bàn phím được nhấn. Sau đó trong file .m cho các lớp học của bạn, bạn thực hiện các phương pháp đại biểu dưới đây và cho cảnh báo để biến mất:

-(BOOL)textFieldShouldReturn:(UITextField *)textField{ 
    [self.scanCode dismissWithClickedButtonIndex:self.scanCode.firstOtherButtonIndex animated:YES]; 
    return YES; 
} 
+2

Cảm ơn ... Lập trình 15 giờ một ngày thực sự làm cho mọi việc rõ ràng quên ;-) – CyberK

+0

@jackslash thể bạn bỏ cha mẹ 'UIAlertView' trong phương thức' textFieldShouldReturn: 'nếu' UIAlertView' không phải là thuộc tính? (Bên cạnh tăng dần hệ thống phân cấp giám sát?) – zekel

+0

@jackslash Ngoài ra, bạn nên sử dụng 'self.scanCode.firstOtherButtonIndex' thay vì' 0'. Và đảm bảo rằng thuộc tính 'UIAlertView' là một tham chiếu yếu, nếu không nó sẽ nằm trong bộ nhớ sau khi nó biến mất. – zekel