клавиатура не работает для текстового поля в uiactionsheet - PullRequest
2 голосов
/ 06 декабря 2010

Я добавил textfeld в uiactionsheet как


-(void)showAction {
 printf("getting action ready \n");
 UIActionSheet *asheet = [[UIActionSheet alloc] initWithTitle:@"New Sheet Name" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles: nil];
       [asheet showInView:self.view];  
       [asheet setFrame:CGRectMake(0, 70, 320,200)];
       UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(0, 100,200, 25)];
 textField.borderStyle= UITextBorderStyleRoundedRect;
 [textField becomeFirstResponder];
 [textField setKeyboardType:UIKeyboardTypeAlphabet];
 [textField setKeyboardAppearance:UIKeyboardAppearanceAlert];
 textField.text=@"test" ;
 textField.delegate=self;
 [asheet insertSubview:textField atIndex:0];
 [textField release];
 [asheet release];
}

, но клавиатура не работает для этого текстового поля, однако работает backspace. ранее, когда я использовал ios 3, он работал нормально, но с ios 3.2 iphone simulator 4.0 не принимает ввод с клавиатуры

<code>
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
 printf("\n textFieldShouldBeginEditing\n ");
 return YES;
}
это называется

<code>
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
 printf("shouldChangeCharactersInRange  %s ",[string UTF8String]);
 return YES;
}
однако этот метод делегата вызывается только для возврата.

1 Ответ

9 голосов
/ 26 апреля 2011

Просто используйте этот способ, который работает для меня

Сначала установите UITextFieldDelegate, UIActionSheetDelegate в вашем файле .h файла

# определение TEXT_FIELD_TAG 9999

# определить ACTION_SHEET_TAG 8888

-(IBAction)ForgotPassword:(id)sender{


     UIActionsheet  *actFollowUp = [[UIActionSheet alloc] initWithTitle:@"Please Enter Email"
                                                      delegate:self
                                                              cancelButtonTitle:@"Cancel"
                                                                      destructiveButtonTitle:@"OK"
                                                              otherButtonTitles:nil];

actFollowUp.tag=ACTION_SHEET_TAG;

textFieldTime = [[UITextField alloc] initWithFrame:CGRectMake(60.f,320.f, 200.f, 30.f)];
[textFieldTime setBackgroundColor:[UIColor whiteColor]];
textFieldTime.delegate= self;
[textFieldTime setKeyboardType:UIKeyboardTypeAlphabet];
textFieldTime.keyboardAppearance= UIKeyboardAppearanceAlert;
textFieldTime.tag=TEXT_FIELD_TAG;

[actFollowUp addSubview:textFieldTime];

UIWindow*   appWindow = [UIApplication sharedApplication].keyWindow;

[actFollowUp showInView:appWindow];
[actFollowUp setFrame:CGRectMake(0.0,200.0, 320.0, 200.0)];

[self performSelector: @selector(acceptInput:) withObject: actFollowUp];

}

 -(void)acceptInput: (UIActionSheet*)actionSheet
{

 UITextField*    textField = (UITextField*)[actionSheet viewWithTag:TEXT_FIELD_TAG];

UIWindow*       appWindow = [UIApplication sharedApplication].keyWindow;

CGRect          frame     = textField.frame;

[appWindow insertSubview:textField aboveSubview:actionSheet];

frame.origin.y += 60.0; // move text field to same position as on action sheet

textField.frame = frame;

}
...