2011-12-26 3 views
5

Я хочу поставить всплывал кнопку, как электронная почта в UIWebView.In моего приложение я создал электронную книгуiphone: Всплывающая кнопку в UIWebView

в WebView Теперь всякий раз, когда я нажимаю (длительное нажатие) на индексной странице ссылке будет создавать всплывающее

окно с открытой и копировать кнопки, как shwon, как показано ниже: enter image description here

Как это я хочу поставить еще одну кнопку, как электронная почта и Print.How создать другую кнопку в всплывающем окне в WebView Спасибо заранее!

ответ

5

Всплывающее окно, на которое вы ссылаетесь, называется UIMenuController. Вы можете получить доступ к методу [UIMenuController sharedMenuController], чтобы получить контроллер меню. Затем вы можете добавить свой собственный UIMenuItems в контроллер меню.

UIMenuItem* myBtn1 = [[[UIMenuItem alloc] initWithTitle: @"Button 1" action:@selector(onButton1:)] autorelease]; 
UIMenuItem* myBtn2 = [[[UIMenuItem alloc] initWithTitle: @"Button 2" action:@selector(onButton2:)] autorelease]; 
UIMenuController* mc = [UIMenuController sharedMenuController]; 
mc.menuItems = [NSArray arrayWithObjects: myBtn1, myBtn2, nil]; 

Теперь реализовать методы

- (void) onButton1: (UIMenuController*) sender 
{ 
} 

- (void) onButton2: (UIMenuController*) sender 
{ 
} 

Более подробно см apple's Doc.

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

вы можете реализовать Long Жест

UILongPressGestureRecognizer* gr = [[[UILongPressGestureRecognizer alloc] initWithTarget: self action: @selector(onShowMenu:) ] autorelease]; 
    [_myview addGestureRecognizer: gr]; 



- (void) onShowMenu: (UIGestureRecognizer*) sender 
{ 
    [sender.view becomeFirstResponder]; 

    UIMenuController* mc = [UIMenuController sharedMenuController]; 

    CGRect bounds = sender.view.bounds; 

    [mc setTargetRect: sender.view.frame inView: sender.view.superview]; 
    [mc setMenuVisible: YES animated: YES]; 
} 
+0

Но как я могу определить Long Press событие? Bcoz webview имеет встроенную функциональность для создания кнопки «Открыть» и «Копировать», нажав (Длительное нажатие) по ссылке. – Developer

+0

проверить обновленный ответ – Maulik

+0

в методе onShowMenu вы можете создавать свои пользовательские кнопки. – Maulik

1

вы можете создать контроллер просмотра, а в файле .xib контроллера контроллера вы можете добавить свои кнопки.

, то вы можете вызвать этот viewcontroller в UIPopover .. и загрузить в него этот контроллер представления.

Теперь, когда вы хотите показать это всплывающее окно только на индексной странице, для этого вам нужно отслеживать такие страницы, как страницы 1-3, имеющие индексную страницу, чтобы на этой странице отображалось popOver. и при нажатии на ссылку индекса можно использовать функцию Webview делегата т.е.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 

в рамках этой функции вы можете применить логику и инициировать поповер, что будет видно