我想检测一个页面加载请求何时给UIWebView返回了5xx或4xx范围内的状态代码.
我已经为Web视图设置了委托,并提供了一个-webView:didFailLoadWithError:错误方法但是虽然它被调用为超时,但是没有调用HTTP状态代码错误.
有什么建议?
我觉得我应该知道这一点但是我已经被困了好几个小时了,而且我已经没想完了.
理论很简单,用户使用夹点操纵滚动视图中的缩放和定位.如果他们在短时间内保持捏合,则滚动视图会记录缩放级别和内容偏移.
所以我想我会在scrollViewDidZoom委托方法上启动performSelector:withObject:withDelay.如果它到期,那么我记录设置.每次调用scrollViewDidZoom时以及捏合手势结束时,我都会删除预定的调用.
这就是我所拥有的:
- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
NSLog(@"resetting timer");
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(positionLock) object:nil];
[self performSelector:@selector(positionLock) withObject:nil afterDelay:0.4];
}
-(void)positionLock{
NSLog(@"position locked ");
}
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale{
NSLog(@"deleting timer");
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(positionLock) object:nil];
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
2010-05-19 22:43:01.931重置定时器
2010-05-19 22:43:01.964重置定时器
2010-05-19 22:43:02.231重置定时器
2010-05-19 22:43:02.253重置定时器
2010- 05-19 22:43:02.269重置定时器
2010-05-19 22:43:02.298重置定时器
2010-05-19 22:43:05.399删除定时器
正如您所看到的,最后一个和最后一个事件之间的延迟应该足以让延迟的选择器调用执行.
如果我用普通的performSelector替换performSelector:withObject:withDelay:我得到这个:
2010-05-19 23:08:30.333重置计时器
2010-05-19 23:08:30.333位置锁定
2010-05-19 23:08:30.366重置计时器
2010-05-19 23:08:30.367位置锁定
2010- 05-19 23:08:30.688删除计时器
这不是我想要的,但是用来表明它只是导致它不起作用的延迟,而不是选择器没有在标题中声明,拼写错误或任何其他原因.
关于它为什么不起作用的任何想法?
我想要做的是检测滑动手势,然后是平移手势,作为相同触摸序列的一部分.因此,用户首先滑动对象以执行动作,然后,在将他们的手指保持在屏幕上的同时,向上/向下移动以将动作传播到周围的对象.
我有一个轻扫手势识别器和一个平移手势识别器.
在我看来,使它们按照我想要的方式运行的理想方法是这样做:
[myPanGestureRecognizer requireGestureRecognizerToSucceed:mySwipeGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)
但是,虽然我确信我不仅仅想象requireGestureRecognizerToSucceed:,但似乎我有.
有没有办法实现我想要的东西而不用子类化UIGestureRecognizer?
iphone cocoa-touch gesture-recognition uigesturerecognizer ios
我想在用户的'Documents'文件夹中创建一个目录,但到目前为止我只发现了如何获取用户的主目录:
javax.swing.JFileChooser fr = new javax.swing.JFileChooser();
javax.swing.filechooser.FileSystemView fw = fr.getFileSystemView();
this.userDirectory = fw.getDefaultDirectory();
Run Code Online (Sandbox Code Playgroud)
在Windows中,上面的代码返回"我的文档"目录,这是很好的,这是新文档应该去的地方.在OS X上,它只返回主目录.
将"文档"添加到返回的路径会导致本地化问题.
我怎样才能做到这一点?
我正在使用嵌入式UIWebView的应用程序.
用户可以在Web视图的文本字段中输入位置,但也可以使用Core Location来发现当前位置.
如果核心位置提供了准确的答案,并且用户当前正在编辑该位置,我想取消编辑并以编程方式填充位置字段.这是基于这样的假设:用户在绝大多数时间都想要使用他们当前的位置,如果他们正在编辑该字段,他们宁愿自动填充它而不是必须完成输入他们的位置.
我的问题是,如何在UIWebView中取消编辑?如果它是一个普通的文本输入字段,我会强制它辞职第一响应者,键盘会消失,但我不知道如何使用UIWebView.将resignFirstResponder发送到Web视图不会执行此操作.
在Web视图上是否可以使用Javascript和stringByEvaluatingJavaScriptFromString:来完成某些操作?还有另外一种方法吗?
提前感谢您的帮助.我今天花了很多时间与此作斗争,我认为我对框架的运作方式有一些严重的错误.
我正在开发一个核心数据应用程序,其中实体具有父/子关系.应用程序在启动时创建NSManagedObjectContext(MOC).当应用程序第一次运行时,它使用异步块将plist的内容导入第二个MOC(根节点是使用URI和-managedObjectIDForURIRepresentation :)从主MOC获取的,就在块完成之前保存第二个上下文.
在我的数据控制器中,我订阅了NSManagedObjectContextDidSaveNotification,并在发送通知时运行以下代码:
- (void)backgroundContextDidSave:(NSNotification *)notification {
if(![notification.object isEqual:self.managedObjectContext]){
if (![NSThread isMainThread]) {
[self performSelectorOnMainThread:@selector(backgroundContextDidSave:)
withObject:notification
waitUntilDone:NO];
return;
}
[self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification]; ;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经对这段代码进行了完整性检查,当然,当第二个MOC保存时,从执行块的线程调用它,然后延迟,并从主线程运行.通知对象包含在第二个MOC中导入的所有对象,包括我们接下来要处理的两个对象.
完成后,我运行以下代码,该代码位于对象所属的NSManagedObject子类的方法中,它只是意味着从子父中删除子代:
TreeEntry *oldParent=self.parent; //keep a pointer to the old parent around so we can delete self from the children
// These next four lines are a sanity check to make sure that both objects are on the same MOC we're saving
NSManagedObjectContext *selfContext=self.managedObjectContext;
NSManagedObjectContext *parentContext=self.parent.managedObjectContext;
NSManagedObjectContext *sharedContext=[[DataController sharedDataController] managedObjectContext];
assert([selfContext isEqual:parentContext] && [selfContext isEqual:sharedContext]); …Run Code Online (Sandbox Code Playgroud) cocoa-touch ×5
iphone ×5
cocoa ×2
core-data ×1
ios ×1
ios4 ×1
java ×1
macos ×1
uiscrollview ×1