javascript を webView に挿入してみることができます。このコードは iPhone でも機能しますが、ページが完全に読み込まれている場合に限られます。
http://www.javascriptsource.com/page-details/disable-text-selection.htmlまたは
http://solidlystate.com/scripting/proper-way-to-disable-text-selection-and-highlighting/
ページが半分しかロードされていないか、まだロードされているときに適切に機能させるには、選択を開始するのと同じように無効化する JavaScript を挿入する、これと同様のセットアップを使用する必要があります。
http://www.icab.de/blog/2010/07/11/customize-the-contextual-menu-of-uiwebview/
無効なセレクターのリストにセレクター @selector(select:) を追加してテストしましたか?
編集:htmlページではなくPDFを表示するものとして、これを試すことができます。
設定
webView を scrollView に入れます。
ScrollView を次のように設定します。最小ズームを 1.0 に、最大ズームを任意にズームします。
weView の読み込みが完了した後。webView で最初の UIScrollView をスキャンします (これをスキャンしているので、以降の iOS バージョンでは壊れません)。UIWebViews フレームを scrollViews サイズに設定します。そして、scrollView の contentSize を webViews contentSize (または今ではフレーム) に設定します。
-(void)setup{
//Get the webView's first scrollView (the one all the content is in).
UIScrollView *webViewContentView;
for (UIView *checkView in [webView subviews] ) {
if ([checkView isKindOfClass:[UIScrollView class]]) {
webViewContentView = (UIScrollView*)checkView;
break;
}
}
webView.frame = CGRectMake(0, 0, webViewContentView.contentSize.width, webViewContentView.contentSize.height);
scrollView.contentSize = webViewContentView.contentSize;
scrollView.delegate = self;
}
ズームを有効にするには、scrollViews デリゲートからメソッドを追加する必要があります。
-(UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView {
return webView;
}
また、サンプル プロジェクトhttp://www.multiupload.com/P8SOZ4NW6Cをダウンロードできます(これは xcode 4 プロジェクトです)。
注:webViewは再レンダリングすることを認識していないため、ズームインするとwebViewのコンテンツがピクセル化され、リンクをクリックできなくなります(ただし、PDFでは問題にならないはずです)。
編集2:より良い方法
これを書いて以来、ピクセル化の問題も解決するはずの、はるかに単純で簡単な方法を実現しました。
-(void)removeInput{
UIScrollView *webViewContentView;
for (UIView *checkView in [webView subviews] ) {
if ([checkView isKindOfClass:[UIScrollView class]]) {
webViewContentView = (UIScrollView*)checkView;
break;
}
}
for (UIView *checkView in [webViewContentView subviews] ) {
checkView.userInteractionEnabled = NO;
}
}
これで、UIScrollView 自体とのみ対話できるようになります。つまり、ズーム、スクロールなどは引き続き機能するはずです (ズームすると、ピクセル化ではなくページが再レンダリングされるはずです)。ただし、テキストを選択したり、入力したりすることはできません。何でも。
また、このメソッドについての何かは、このUIWebView サブビューのリストに基づいて、ページの読み込みが完了した後ではなく、ページの読み込みが開始される前にこれを設定できる可能性があることです。