안녕하세요 아이폰 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)
: 당신이 메뉴를 표시 할 때 첫 번째 응답자가 될 것 뷰의 응답자 체인 : 당신이 선택적으로 canPerformAction를 구현해야)- (void) onCustom1: (UIMenuController*) sender
{
}
- (void) onCustom2: (UIMenuController*) sender
{
}
3 : 메뉴를 표시
- (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) 메뉴를 표시하는보기가 canBecomeFirstResponder로 YES/TRUE를 반환하는지 확인하십시오. 예를 들어 UILabel을 첫 번째 응답자로 만들려고하면 NO를 반환하므로 서브 클래스를 만들어야합니다.
6) 그게 전부입니다. 액션 콜백이 호출 될 때 FirstResponder를 다시 사기를 원할 수도 있습니다.하지만 이렇게하려면 firstResponder를 검색하는 로직을 구현해야합니다.
관련 문제
- 1. UIMenuController - 사용자 정의
- 2. UIMenuController 업데이트하기
- 3. UIMenuController 부모 송신자를 잡는 방법
- 4. UIMenuControllerWillShowMenuNotification을 사용하여 UIMenuController 숨기기
- 5. 아이폰의 UIWebView에서 사용자 정의 메뉴 표시
- 6. 레일 사용자 정의 사용자 정의
- 7. 사용자 정의 - 사용자 정의 속성
- 8. uimxtcontroller가없는 uimenucontroller, universal app xcode 4
- 9. UITableViewCell, 그룹화 된 스타일로 UIMenuController 표시
- 10. 사용자 정의/사용자 컨트롤
- 11. Qt의 사용자 정의 위젯 사용자 정의 스타일
- 12. Windows Form - 사용자 정의 사용자 정의 컨트롤
- 13. asp.net 사용자 정의 웹 사용자 정의 - 버튼
- 14. 사용자 정의 AuthorizeAttribute + 사용자 정의 SiteMapProvider 관련?
- 15. 계층 구조 사용자 정의 사용자 정의 컨트롤
- 16. wcf에서 사용자 정의 사용자 정의 유효성 확인
- 17. silvelight 사용자 정의 컨트롤의 사용자 정의 바인딩
- 18. C# 사용자 정의 사용자 정의 속성
- 19. 추가 사용자 정의 속성은 사용자 정의 toolpart
- 20. 사용자 정의 글꼴을 사용하는 사용자 정의 텍스트보기
- 21. 사용자 정의
- 22. 사용자 정의
- 23. LaTeX - 사용자 정의 'wrapfig'환경 정의
- 24. CIL에서 사용자 정의 속성 정의
- 25. ASP.NET MVC로 사용자 정의 사용자 모델 (사용자 정의 필드 등)
- 26. ASP.NET : 사용자 정의 사용자 테이블이있는 사용자 정의 멤버쉽 공급자
- 27. ASCX 사용자 컨트롤의 사용자 정의
- 28. 사용자 정의 사용자 클래스로 변환
- 29. 사용자 정의 컨트롤의 사용자 이벤트
- 30. 개별 사용자 지정 사용자 정의
일반적으로 대답은 코드의 의도에 대한 설명이 포함되어 있고 다른 사람을 소개하지 않고 문제를 해결하는 이유가있는 경우에 유용합니다. –