您好我想在iPhone SDK3.x中創建一個自定義泡泡菜單,如剪切/複製/粘貼菜單。我知道它是UIMenuController,但它只提供標準的剪切/複製/過去菜單。任何人都知道如何製作類似這樣的泡泡菜單。任何示例和代碼供參考?自定義UIMenuController
6
A
回答
-1
使用UIMenuController上的menuItems屬性。
39
1),你需要自定義菜單項添加到共享UIMenuController:
UIMenuItem* miCustom1 = [[[UIMenuItem alloc] initWithTitle: @"Custom 1" action:@selector(onCustom1:)] autorelease];
UIMenuItem* miCustom2 = [[[UIMenuItem alloc] initWithTitle: @"Custom 2" action:@selector(onCustom2:)] autorelease];
UIMenuController* mc = [UIMenuController sharedMenuController];
mc.menuItems = [NSArray arrayWithObjects: miCustom1, miCustom2, nil];
2)你需要的地方實現你的處理方法在響應鏈的觀點,這將是第一個響應者,當你顯示菜單:
- (void) onCustom1: (UIMenuController*) sender
{
}
- (void) onCustom2: (UIMenuController*) sender
{
}
3)您可選擇需要實現canPerformAction:在響應鏈的觀點,這將是第一個響應者,當你顯示菜單:
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(onCustom1:))
{
return YES; // logic here for context menu show/hide
}
if (action == @selector(onCustom2:))
{
return NO; // logic here for context menu show/hide
}
if (action == @selector(copy:))
{
// turn off copy: if you like:
return NO;
}
return [super canPerformAction: action withSender: sender];
}
4)如果您想呈現菜單的視圖尚不支持顯示菜單, UIWebView將在用戶進行長時間點擊時顯示菜單,但UILabel沒有內置的菜單支持),那麼您需要自己展示菜單。這通常是通過附加UILongPressGestureRecognizer到視圖,然後顯示回調菜單進行:
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];
}
注意,必須有聲稱firstResponder用於顯示菜單中的視圖。 5)確保顯示菜單的視圖返回YES/TRUE到canBecomeFirstResponder。例如,如果您嘗試將UILabel作爲第一響應者,它將返回NO,因此您必須將其繼承。
6)就是這樣。當動作回調被調用時,您可能想要resignFirstResponder - 但要做到這一點,您需要實現邏輯來發現firstResponder。
相關問題
- 1. 自定義UIMenuController
- 2. UIMenuController - 自定義
- 3. UIMenuController自定義項目
- 4. 將語音添加到自定義UIMenuController
- 5. 擺脫UIMenuController的自定義菜單項
- 6. 刪除複製並從UIMenuController定義
- 7. iOS UIMenuController Xamarin Forms的自定義渲染器
- 8. UIMenuController未在UICollectionViewController子類上顯示自定義操作
- 9. UIMenuController不顯示自定義UIMenuItem在子類UITextView
- 10. 如何讓UIMenuController爲自定義視圖工作?
- 11. 在哪裏添加自定義菜單項到UIMenuController?
- 12. 是否可以自定義UIMenuController的顏色?
- 13. UIMenuController
- 14. 如何創建自定義UIMenuController,其中只包含非默認的自定義項目?
- 15. WKWebView和UIMenuController
- 16. UIMenuController和標籤
- 17. 單按鈕UIMenuController
- 18. 隱藏UIMenuController
- 19. 顯示UIMenuController時獲取選定文本
- 20. 從UIMenuController獲取選定的文本
- 21. 自定義類=自定義+分配,自定義+初始化
- 22. 對於UIMenuController的NSNotifcationWillShowMenuNotification
- 23. UIMenuController沒有顯示
- 24. 從UIBarButtonItem顯示UIMenuController
- 25. 帶圖像的UIMenuController
- 26. 無法隱藏UIMenuController
- 27. 自定義UIView自定義UITableViewCell
- 28. 自定義控件自定義方法?
- 29. 自定義newsbsite.aspx和自定義webtmplates(sharePoint)
- 30. 自定義與非自定義屬性?
一般來說,如果答案包含對代碼意圖做什麼的解釋以及爲什麼解決問題而不引入其他人 –