Как отображать пользовательское всплывающее окно вместо UIMenuController

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

введите описание изображения здесь

Но я хочу отображать настраиваемое всплывающее окно вместо UIMenuController, как это,

введите описание изображения здесь

Как я могу это сделать?

ОБНОВЛЕНИЕ

Какой метод будет вызван при открытии этого UIMenuController?


person Community    schedule 02.07.2013    source источник
comment
см. это: stackoverflow.com/questions/3267296/ и stackoverflow.com/questions/3537795/   -  person DharaParekh    schedule 02.07.2013
comment
@DharaParekh Как я уже сказал, я не хочу добавлять больше опций в UIMenucontroller, но вместо этого я хочу заменить их своим всплывающим окном   -  person    schedule 02.07.2013


Ответы (1)


Проверьте этот принятый ответ на этот вопрос.

Вы можете создать подкласс UITextField и переопределить метод ниже, чтобы отключить любое действие, которое вы хотите:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{
    if (action == @selector(paste:))
    {
        return NO;
    }
    else if (action == @selector(cut:))
    {
        return NO; 
    }
    else if (action == @selector(copy:))
    {
        return NO;
    }
     ... //etc etc

    return [super canPerformAction:action withSender:sender];
}

и отобразите свой, используя следующий код:

UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setTargetRect:textField.frame inView:textField.superview];
[menu setMenuItems:[NSArray arrayWithObjects:
                            [[UIMenuItem alloc] initWithTitle:@"Test" action:@selector(test)],
                            nil]];
[menu setMenuVisible:YES animated:YES];

а в методе canPeformAction:withSender: вы можете вернуть YES для селектора Test.

person Rakesh    schedule 02.07.2013