UIActionSheet закрывает после 2-го нажатия кнопки - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть actionSheet с кнопками EDIT и DELETE, обе из которых являются другими кнопками. Это код, который я написал для него

-(void)method1
{

    action = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil     destructiveButtonTitle:nil otherButtonTitles:@"Edit", @"Delete", nil];
     action.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
    [action showInView:self.view];
    [action release]; 

}

Я использовал метод delete для назначения действий методу ..

-(void)actionSheet:(UIActionSheet *)action didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    if(buttonIndex == 0)
    {
        // do something
    }
    if(buttonIndex == 1)
    {
        // do something
    }
}

теперь проблема в том, что лист действий не закрывается одним нажатием любой из кнопок .. Пожалуйста, помогите мне с некоторым решением.

Ответы [ 2 ]

1 голос
/ 26 января 2012

Это похоже на ошибку в iOS4.0.У меня была эта проблема в моем симуляторе.Я изменил версию на 4.3 и 5.0, и она выглядела нормально.

Редактировать:

Кажется, что моя проблема была более конкретно связана с листом действий, запускаемым дваждыМетод делегата "- (BOOL) textFieldShouldBeginEditing: (UITextField *) textField"

Не уверен, почему это вызывается дважды в этом случае, но не в других (опять же, я предполагаю, что ошибка iOS 4.0 была исправлена ​​в более поздних выпусках).Мой обходной путь - отслеживать, если он уже был вызван, и не вызывать его второй раз.

Edit 2

Я бы предложил сделать что-то вроде:

-(void)method1
{
    if(hasLaunchedActionSheet)
    {
        return;
    }

    hasLaunchedActionSheet = YES;
    ...

и:

-(void)actionSheet:(UIActionSheet *)action didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    hasLaunchedActionSheet = NO;
    ...

Для меня проблема не столько в Xcode, сколько в самом iOS SDK, вызывающем мое событие дважды.Я не уверен, как вы вызываете method1, так что это может быть другая проблема с другим событием.

1 голос
/ 30 декабря 2011

Вы используете неправильные методы делегата, для взаимодействия кнопок вы должны использовать:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex

вместо:

-(void)actionSheet:(UIActionSheet *)action didDismissWithButtonIndex:(NSInteger)buttonIndex

...