UIMenuController Пользовательские элементы

Для многомерных массивов может быть сложно получить доступ к свойству length правого измерения. Возьмем следующий код, например:

int [][][] a  = new int [2][3][4];

for(int i = 0; i < a.length; i++){
    for(int j = 0; j < a[i].length; j++){
        for(int k = 0; k < a[j].length; k++){
            System.out.print(a[i][j][k]);
        }
        System.out.println();
    }
    System.out.println();
}

Каждое измерение имеет разную длину, поэтому тонкая ошибка заключается в том, что средняя и внутренняя петли используют свойство length той же размерности (поскольку a[i].length (f5)).

Вместо этого внутренний цикл должен использовать a[i][j].length (или a[0][0].length для простоты).

14
задан Srikar Appalaraju 23 June 2011 в 16:27
поделиться

1 ответ

Я думаю, что это один из немногих случаев, когда вы хотите создать подкласс UITextView . Я просто попробовал это с помощью следующего кода, и единственный показанный пункт меню - это мой пункт Do Something .

Из моего TestViewController.m

@implementation TestViewController

- (void) doSomething: (id) sender
{
    NSLog(@"Doing something");
}

- (void) viewDidLoad
{
    UIMenuController *menuController = [UIMenuController sharedMenuController];
    UIMenuItem *item = [[[UIMenuItem alloc] initWithTitle: @"Do Something"
        action: @selector(doSomething:)] autorelease];
    [menuController setMenuItems: [NSArray arrayWithObject: item]];
}

@end

Код для моего MyTextView.h :

//  MyTextView.h

#import <UIKit/UIKit.h>

@interface MyTextView :UITextView {

}

@end

Код для MyTextView.m :

//  MyTextView.m

#import "MyTextView.h"

@implementation MyTextView

- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
    return NO;
}

@end
16
ответ дан 1 December 2019 в 13:58
поделиться