0

UIActionsheet に 3 つのボタンがあります。一番下にキャンセルボタンが欲しい。

また、すべてのボタンで UIActionsheet を閉じることができるようにしたいと考えています。

現在、それらのどれも私のために仕事をしません。

これが私がそれを表示する方法です:

UIActionSheet *actionSheet = nil;
NSArray *otherButtons = nil;


otherButtons = [NSArray arrayWithObjects:@"Button1", @"Button2", @"Button3",
                     nil];       

actionSheet = [[UIActionSheet alloc] initWithTitle:title
                                          delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil, nil];


for( NSString *btntitle in otherButtons)
{
    [actionSheet addButtonWithTitle:btntitle];
}    

[actionSheet addButtonWithTitle:@"Cancel"];
actionSheet.cancelButtonIndex = actionSheet.numberOfButtons - 1;

actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view];

私のデリゲートでは、これを行います:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
      //some code
      [actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
}

しかし、それは却下しません。ボタンのデザインと位置を変更したくありません。私は何をすべきか?

4

5 に答える 5

1

lpgr からアクション シートを開くときは注意してください。「終了」ではなく、「開始」でのみ開きます。

- (void) handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
    CGPoint p = [gestureRecognizer locationInView:self.tblYourVids];

    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        NSIndexPath *indexPath = [self.aTable indexPathForRowAtPoint:p];
        if (indexPath == nil)
            NSLog(@"long press on table view but not on a row");
        else {
            NSLog(@"long press on table view at row %d", indexPath.row);
            self.selectedCell = [self.aTable cellForRowAtIndexPath:indexPath];
            DLog(@"open action sheet only once");
            [self showActionSheet];
        }
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        // eat this one
    }
}
于 2014-01-09T20:34:15.727 に答える
1
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

    [actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
    [self performSelector:@selector(OtherOperations) withObject:nil afterDelay:0.0];

}

-(void)OtherOperations{      //some code
}
于 2012-12-01T10:16:14.423 に答える
0

これを .h ファイルに追加する必要があります。

 <UIActionSheetDelegate>

また、この行を .m ファイルに追加します。

 actionSheet.delegate = self;

これが機能しているかどうかを教えてください。うまくいけば、それを正解として受け入れます

于 2012-12-01T10:01:45.853 に答える
-1

これはキャンセルする正しい方法ではありません。まず、デフォルトでUIActionSheet無効にし て、この Web を通過する必要があります。UIActionSheetjavascipt

http://www.icab.de/blog/2010/07/11/customize-the-contextual-menu-of-uiwebview/

于 2012-12-01T10:32:21.853 に答える
-1

以下のコードを使用してみてください。自動的に閉じます。

UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@""
                                                       delegate:self
                                              cancelButtonTitle:@"cancel"
                                         destructiveButtonTitle:@"Printer"
                                              otherButtonTitles: nil];

    [sheet showInView:self.view];
    [sheet release];


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

それが機能しているかどうかを教えてください

ハッピーコーディング!!!!!

于 2012-12-01T10:10:01.673 に答える