Tag: cocoa触摸

核心数据主要上下文并发性

所以我在过去的几个星期里一直在阅读和使用Core Data,并且使用以下设置来实现我的Core Data堆栈: 保存上下文 – 与商店绑定的根上下文,位于PrivateQueue上 主要上下文 – 在主线程上运行,保存上下文的subprocess 编辑上下文 – 在任何线程中按需创build,以编辑背景中的UI数据作为主要上下文的子项 有了这个设置,我没有任何问题,我已经采取了必要的预防措施,以防止多个背景编辑上下文同时调用[editMoc保存],但我没有看到相对于主线程是如何安全的/上下文。 具体来说,我在使用这个设置时看到的所有代码如下所示: [edit performBlock^{ [edit save:nil]; [main performBlock:^{ [main save:nil]; [root performBlock…] }]; }]; 现在我无法想象的是这样的:每当子环境保存时,数据就被传播到主环境中,但是没有任何事情发生,以确保数据当前不被读取/执行在主要的背景下,对吗? 基本上,我觉得像这样的事情会更合适: [edit performBlock^{ dispatch_async(dispatch_get_main_queue(), ^{ [edit save:nil]; }); [main performBlock:^{ [main save:nil]; [root performBlock….] }]; }]; 至less如果这样做,我们会确保传播相对于主线程/ UI是安全的,不是吗? 这种关系与我的另一个问题“为什么主要的语境真的应该和主线程有关呢?” 现在,如果我需要执行读取操作,我可以从主要的上下文中进行读取,而且我可以理解,在主线程中它是有意义的,但是如果传播只是“随时”发生的(因为我们不是在主线程中执行它们)将主线程绑定到底的最终目的是什么? 我甚至不需要去做,因为数据似乎已经从孩子保存的主要背景中抵达了,是吗? 从那里一个简单的[tableView重载]就足够了。 任何帮助表示赞赏! 编辑: 所以我想我已经find了我的问题的答案,那就是Core Data实际上是在内部使用正确的线程将更改从子上下文推送到父上下文(即使用父上下文的队列 – 在这种情况下会成为主队列)。 […]

如何在不使用Xcode 7的情况下embedded框架

如果我将Cocoa Touch Framework链接到一个项目而不复制,但只有链接,然后我得到一个链接器错误,说,框架不在位置。 它在Xcode 6中工作,但不在Xcode 7中。你知道任何解决方法吗? 我看到在embedded框架时可以设置更多的属性,但是Location不能设置为relative ,只有absolute可用。

获取animationUIImageView的坐标

为了这个目的,我在UIImageView的水平位置上进行了animation处理,我用了下面的代码来使用NSTimer timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(onTimer) userInfo:nil repeats:YES]; -(void)onTimer { [UIView animateWithDuration:10.0f animations:^{ //Moving_Cloud is an image view Moving_Cloud.frame = CGRectMake(200.0f, 150.0f, Moving_Cloud.frame.size.width, Moving_Cloud.frame.size.height); }]; } 现在我面临的问题是我需要得到animation持续时间后的“Moving_Cloud”的坐标 请帮帮我 提前致谢。

键盘出现时向上移动视图

问题: 我有一个ViewController ,它有一个UIScrollView的子类。 在scrollView中有3个UITextField 。 其中2个使用数字键盘,1个使用UIPickerView键盘。 问题是当键盘出现时,它隐藏了UITextField 。 所以我想要做的就是当键盘被显示时移动UIViewController的视图。 我已经尝试过了: 我已经search了这个问题,所以我发现了一些答案,基于他们我写这个代码: override func viewDidLoad() { super.viewDidLoad() //Keyboard notifications NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) } //MARK: – keyboards @objc fileprivate func keyboardWillShow(notification: Notification) { self.changeViewOriginBasedOnKeyboardPosition(notification: notification) } @objc fileprivate func keyboardWillHide(notification: Notification) { self.changeViewOriginBasedOnKeyboardPosition(notification: notification) } fileprivate […]

iOS – 在UITableViewCell里面添加UITextField的Target / Action

我有UITableView使用包含UITextField的自定义UITableViewCell 。 我想调用一个方法( myMethod ),当它被点击( UIControlEventTouchDown ),并尝试通过执行以下步骤在UITableView委托方法cellForRowAtIndexPath内连线: [tf addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchDown]; 当UITextField被点击时,没有任何反应。 我试图为UITableView之外的另一个UITextField做同样的事情: [othertf addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchDown]; 当我点击othertf ,就像我期望的那样调用该方法。 我有点困惑,因为代码是相同的,除了我换了othertf tf 。 以下是cellForRowAtIndexPath的完整代码: – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *DetailCellIdentifier = @"DetailFieldView"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:DetailCellIdentifier]; if (cell == nil) { NSArray *cellObjects = [[NSBundle mainBundle] loadNibNamed:DetailCellIdentifier owner:self options:nil]; cell = […]

UIWebView自动旋转损坏网页视图内容(截图里面)

我有一个UIWebView自动旋转的问题。 Web视图可以正常显示,但内容不是。 正如你可以在底部的屏幕截图中看到,有一个黑色的边缘,我知道这是webview,因为我可以看到滚动当我滚动。 视图控制器有: – (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } webview具有完整的自动resize掩码,并且该视图是自动调整子视图的大小。 我尝试了一堆来自stackoverflow和谷歌的技巧,但没有一个工作。 这只发生在一些网站上,但如果我打开有问题的网站在移动Safari或甚至ios Opera浏览器,它正确旋转。 编辑:一个有问题的网站的例子: http : //m.calcalist.co.il webview在界面构build器中设置并使用以下代码加载: [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.calcalist.co.il"]]]; scalesPageToFit = YES; // doesn't help 谢谢!

删除与用户区域设置相关的date格式

我想显示有关用户设备的区域设置的date和月份。 因此,今天的date将显示为5/18美国设置和18.5。 与德国设置。 因为我想处理每个可能的语言环境,所以我不能简单地使用[dateFormatter setDateFormat:]和[dateFormatter setDateStyle:NSDateFormatterShortStyle]将显示年份。 除了试图确定string中的年份值并将其删除之外, 还有更优雅的方法吗?

在复杂对象上定制NSSortDescriptor

这是我的第一篇文章,如果我不尊重所有的惯例,尽pipe我会尽我所能。 我总是find解决我的问题的方法,但是我完全停留在一个相当复杂的cocoa问题上。 我想在CoreData对象的列表上实现一个复杂的sorting。 我有一个由Book对象组成的目录,它可以是佐贺(第一本书及其续集)的一部分。 简化的结构如下所示: @interface Book : NSManagedObject @property (nonatomic, retain) NSString * title; @property (nonatomic, retain) NSNumber * tomaison; //volume numbering @property (nonatomic, retain) Saga *fromSaga; @interface Saga : NSManagedObject @property (nonatomic, retain) NSString * title; 我正试图在我的CoreData数据库,在书上执行一个查询: NSEntityDescription *entity = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:context]; 我需要三个步骤来sorting: 1)根据本书的stream派(不包括在上面的代码中,因为它不需要) NSSortDescriptor* mainSort = [[NSSortDescriptor alloc] initWithKey:@"ofGenre.title" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]; […]

NSFetchedResultsController的节名称与pipe理对象值不匹配

我正在使用一个NSFetchedResultsController来填充一个UITableView结果从一个中等规模的核心数据存储约1500个实体。 结果控制器是相当标准的 – 对于这种设置,潜在错误的一些“热点”是不正确的。 在同一个(主)线程上创build的托pipe对象上下文与其上的一样 没有使用caching(因为sorting频繁变化) sectionNameKeyPath用于将结果拆分成多个部分 然而,我的部分结果非常奇怪。 例如,考虑用于设置节标题视图的标题的方法: – (NSString *)titleForHeaderInSection:(NSInteger)section { id <NSFetchedResultsSectionInfo> sectionInfo = [[self.resultsController sections] objectAtIndex:section]; return [sectionInfo name]; // <——- Stopped at breakpoint here } 我已经停在指定的行使用断点,并使用GDB,检查以下内容: (gdb) po [[self resultsController] sectionNameKeyPath] reviewDateString (gdb) print section $11 = 1 (gdb) print (int) [sectionInfo numberOfObjects] $12 = 4 (gdb) po [sectionInfo name] […]

UIActionSheet从子视图控制器显示iPad崩溃

我很抱歉,如果这已被问,但我似乎无法find任何地方。 我甚至在一个演示项目中重新创build了我的问题,以防你想亲眼看到它,尽pipe我不知道应该在哪里发布。 我有一个xibless基于UINavigationController的应用程序。 我的一些子ViewControllers在顶部右侧有一个button,然后显示一个UIActionSheet。 我的应用程序专为iPhone和iPaddevise,所以当我准备好显示UIActionSheet时: UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:@"%@ Menu", [self title]] delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Email", @"Print", nil]; [actionSheet setActionSheetStyle:UIActionSheetStyleDefault]; if ([actionSheet respondsToSelector:@selector(showFromBarButtonItem:animated:)]) [actionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES]; else [actionSheet showInView:[self view]]; [actionSheet release]; 在iPad上,我试图显示UIActionSheet附加到正确的栏button,并在iPhone上它应该从底部滑入。 所有这些都很好用。 不幸的是,如果你点击button,并在iPad上显示菜单,但点击应用程序左上angular的后退button,菜单不会消失。 相反,UINavigationController尽职尽责地popup,UIActionSheet仍然在那里。 如果你尝试点击菜单上的东西,你当然会崩溃。 如果用户在屏幕上点击了其他任何东西而不是“后退”button,则菜单会正常closures。 如果你在iPhone上试用这个testing,一切都按预期工作。 没有问题。 我的演示项目有一个AppDelegate和一个ViewController,这是关于它。 AppDelegate生成一个NSDictionary的NSDictionary,所以我有一个模型,我可以通过演示这个问题。 ViewController显示字典的所有关键字,如果相应的值是一个NSDictionary,您可以点击它来深入查看。