Кнопка отмены действия iPhone только реагирует на прикосновение к центру - PullRequest
0 голосов
/ 21 декабря 2011

Я встречал нечто подобное раньше, когда кнопка реагирует только на прикосновения в части своего вида.Я обнаружил, что изображение с прозрачной областью находилось на более высоком z-уровне, что скрывало касания в местах перекрытия.Это произошло из-за того, что кнопка была добавлена ​​как подпредставление перед добавлением затемняющего вида.

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

(Для чего я только что превратил приложение в универсальное приложение, и я тестирую как на iOS 4.3, так и на 5.0. На листе действий на iPad нет кнопки отмены. Эта проблема существует при моделированиидля iPhone для iOS 4.3 и 5.0.)

Я ищу другие идеи относительно того, что вызывает проблему.

ОБНОВЛЕНИЕ Вот код для отображения листа действий

- (void) shareButtonPressed {

    SHKItem *item = [SHKItem larkspreeSearchResult:searchResult];
    item.image = eventImageRaw;

    // Get the ShareKit action sheet
SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

    // Display the action sheet
    [actionSheet showInView:self.view];

}

Так как это для подкласса листа действий, это, прямо из ShareKit, также может быть полезным.

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type
{
SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"Share")
                                                      delegate:self
                                         cancelButtonTitle:nil
                                    destructiveButtonTitle:nil
                                         otherButtonTitles:nil];
as.item = [[[SHKItem alloc] init] autorelease];
as.item.shareType = type;

as.sharers = [NSMutableArray arrayWithCapacity:0];
NSArray *favoriteSharers = [SHK favoriteSharersForType:type];

// Add buttons for each favorite sharer
id class;
for(NSString *sharerId in favoriteSharers)
{
    class = NSClassFromString(sharerId);
    if ([class canShare])
    {
        [as addButtonWithTitle: [class sharerTitle] ];
        [as.sharers addObject:sharerId];
    }
}

// Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];

// Add Cancel button
[as addButtonWithTitle:SHKLocalizedString(@"Cancel")];
as.cancelButtonIndex = as.numberOfButtons -1;

return [as autorelease];
}

Метод showInView не был переопределен.

1 Ответ

2 голосов
/ 22 декабря 2011

Если этот контроллер представления является частью UINavigationController с настроенной панелью инструментов или UITabBarController, то любой лист действий должен быть представлен в представлении родительского контроллера. Например, [actionSheet showInView:self.navigationController.view]; или [actionSheet showInView:self.tabBarController.view];.

...