我正在尝试滚动到我在UIWebView中加载的pdf文档中的特定页面.我可以在iOS 5中使用以下方法执行此操作:
pageHeight = webView.scrollView.contentSize.height / numberOfPages;
[[webView scrollView] setContentOffset:CGPointMake(0,pageNumber*pageHeight) animated:YES];
Run Code Online (Sandbox Code Playgroud)
这仅在页面已经加载到视图中并且滚动到由用户操作触发时才有效.对于我想将新的pdf加载到webview到特定页面的情况,我遇到了麻烦.我正在请求加载新的pdf,然后在页面完成加载时执行以下操作:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
int contentHeight = myWebView.scrollView.contentSize.height;
int pageHeight = contentHeight / 5; // 5 total pages in example PDF
int scrollDelta = pageHeight*2; // Scroll forward 2 pages
[[myWebView scrollView] setContentOffset:CGPointMake(0,scrollDelta) animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
虽然myWebView.scrollView.contentSize.height是完整文档高度,当我在初始文档加载后单击按钮时运行类似代码时,当我加载新文档并且webViewDidFinishLoad触发myWebView.scrollView.contentSize.height等于高度时UIWebview,而不是其中的内容.这当然使pageHeight比它需要的小很多,并且不会滚动到正确的位置.
webWeDidFinishLoad认为可能页面还没有完全加载,即使我收到了回调,但是我已经尝试过像延迟滚动代码一样的黑客攻击,但是在那些情况下,contentSize.height由于某种原因是0.
任何想法将不胜感激.
谢谢!
我正在尝试调试为什么我无法MapView
在调试模式下工作,似乎应用程序没有使用debug.keystore
我创建API密钥的文件进行签名.debug.keystore
在我的系统上命名的文件的唯一版本是在C:\Users\<user>\.android
预期的文件夹中,但是在完全删除此文件然后重建未签名的应用程序后,它仍然以调试模式运行,并且不会重新生成此文件,就像它使用不同的签名一样证书.知道这里发生了什么吗?
谢谢!
我在尝试创建通用ArrayAdapter时遇到了问题.这可能与我对Java中的泛型有限的理解有关,并且希望有人可以让我直截了当.基本上我有一个抽象的基本适配器类:
public abstract class BaseAdapter<T> extends ArrayAdapter<T>
{
....
private List<T> items;
....
protected abstract List<T> build(JSONArray jsonArray);
....
@Override
public T getItem(int position)
{
return items.get(position);
}
....
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个扩展此基类的适配器:
public class MyAdapter extends BaseAdapter<BaseModel>
{
....
@Override
protected List<BaseModel> build(JSONArray jsonArray)
{
if (useBaseModel())
{
return BaseModel.buildBaseModels(jsonArray); //returns List<BaseModel>
}
else
{
return SubclassModel.buildSubclassModels(jsonArray); //returns List<SubclassModel>
}
}
....
}
Run Code Online (Sandbox Code Playgroud)
模型定义为:
public class BaseModel{...}
public class SubclassModel extends BaseModel{....}
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为即使SubclassModel扩展了BaseModel,它们的列表也不相同.这个线程(将List <SubClass>强制转换为List <BaseClass>的最有效方法)解释了这一点,并说使用它代替:
List<? extends BaseModel>
Run Code Online (Sandbox Code Playgroud)
当我改为: …