당신은 어떤 하이재킹을해야 할 것입니다. 나는 그것이 가능한지조차 모른다. 아마 UILongPressGestureRecognizer라는 제스처 이벤트에 응답하는 것 같습니다.
제스처가 추가 된보기를 찾아야합니다. 이 같은.
NSArray *gestures = myWebView.gestureRecognizers;
for(int i=0;i<[gestures count];i++){
UIGestureRecognizer g = [gestures objectAtIndex:i];
if([g isKindOfClass:UILongPressGestureRecognizer.Class]){
[myWebView removeGestureRecognizer:g];
break;
}
}
하지만 제스처가 UIWebview에 직접 있다고 생각하지 않습니다. 하위 뷰 중 하나에 있습니다. 아니 하나에 다음 내가 의심 란 무엇입니까 가장에있는보기에 아마도 경우
그래서이 서브 뷰에
UIScrollView *sview = [[mywebview subviews] objectAtIndex:0];
을 수 있습니다. 그것은 문서화되지 않은 뷰 유형이지만, 우리가 호출하는 메소드의 UIView로 취급한다면 아마 안전 할 것입니다. 또한, 당신이 UIView로 취급하기 때문에, 그것은 내가 아는 한 규칙에 위배되지 않습니다. 당신이 볼 당신이에서 제거 알 중요하기 때문에
UIScrollView *sview = [[mywebview subviews] objectAtIndex:0];
UIView *realWebView = [[sview subviews] objectAtIndex:10];
나는 모든 뷰에서 제스처를 제거하려고 할 (안된) 스 니펫을 작성하지 않은 이유는.
제거한 후에는 고유 한 UILongPressGestureRecognizer를 작성한 다음 새보기를 해당보기 (제거 된보기)에 추가해야합니다.
복사 선택 등의 모든 기능을 잃어 버렸지 만 지금은 직접 구현할 수 있습니다.
이전 기능을 원한다면 다시 얻을 수있는 방법을 알고 있다고 생각하지만 허용 또는 안전하다고 약속 할 수 없습니다.
제스처를 제거하기 전에 메서드를 UIView로 재정의해야합니다. 당신은 내가 아무것도 약속 할 수
@implementation UIView (extended)
-(BOOL) respondsToSelector:(SEL)aSelector {
printf("SELECTOR: %s\n",
[NSStringFromSelector(aSelector) UTF8String]);
return [super respondsToSelector:aSelector];
}
@end
(파일의 상단에) 현재 작업 클래스 파일에서 그것을 할 수 있어야하지만,이보기에 호출 될 때마다 메소드의 이름을 기록해야 .
앱을 실행하고 복사, 붙여 넣기, 선택, 모든 메소드 선택을 실행하십시오. 단추를 누를 때 호출되는 메소드가 로그에 표시되어야합니다. 단추를 누를 때 여러 가지 방법이 표시 될 수 있습니다. 아마도 첫 번째 단추 만 원할 것입니다.
이제 menuItem을 만들 때 할당 할 선택기를 알 수 있습니다.
이것은 모두 추측입니다. 희망이 도움이됩니다.
저는 이것이 canPerformAction에서 수행 될 수 있다고 생각합니다. 하지만 난 정말 COPY 메뉴 항목을 제거하는 방법을 몰라. – Zaldy
안녕하세요, UIMenuController에서 다른 메뉴 항목을 제거하는 방법을 알려주시겠습니까? –
@Risma - 화살표 항목을 제거하고 메인 프레임에 사용 가능한 모든 메뉴를 놓으려는 행운이 있습니까? –