Tag: Objective C

如何防止UIView消耗用户输入

我有一个简单的视图层次结构示例。 显然,主视图空间是用户将与之交互的主要空间。 在底部,我有一些标签,可以弹出以指示用户他/她在应用程序的进展中。 通常,这些选项卡仅占用底部“自定义选项卡”矩形所指示的空间,但它们可以一直向上扩展以填充“空白空间”框。 为了使标签仍然可以点击,我必须使标签视图的框架成为包含“自定义标签”空间和“空白空间”空间的完整矩形。 这导致“空闲空间”在弹出选项卡时不与用户交互,因为输入基本上被该UIView使用,而不是通过层次结构的其余部分转发。 我想这个问题的根源是“主视图空间”和“空格+自定义选项卡”都是主窗口的子视图。 如果用户没有主动点击交互元素,有没有办法告诉系统将用户输入转发到兄弟视图? 例如,使用touchesBegan , touchesEnded等方法执行操作,这些方法将向操作系统指示此视图未使用输入。 编辑 这是该视图的另一个版本,演示了一个标签是打开的: EDIT2 经过一些简单的测试后,似乎默认行为是最顶层的视图首先获得输入。 即使您在UITextField上有一个清晰的UIView ,这也适用。 清晰的UIView将使用输入,防止UITextField可编辑 EDIT3 选项卡的工作方式是用户可以点击选项卡(大小与第一张图片一样),然后它将展开以显示与该选项卡关联的缩略图视图(如第二张图片中所示)。 然后,用户可以选择再次点击标签以将其关闭,并将尺寸返回到原始图片。 为了使标签在打开时可以点击,我必须使包含视图基本上足够大,以包含所有4个标签,就好像它们是打开的一样。 这会在包含视图中产生大量空白空间。 这个空白空间导致屏幕上基本上死的输入空间。 如果主视图空间中有一个空白空间覆盖的按钮,则用户将无法单击该按钮。 我希望能够避免这种行为,并让空白空间覆盖的按钮仍然可以点击。

UISegmentedControl以编程方式调用selectedSegmentIndex时调用action方法

我的xib文件中有一个UISegmentedControl。 它链接到xib文件中值更改事件的操作方法。 当我以编程方式设置selectedSegmentIndex的值时,将调用action方法 mysegmentedcontrol.selectedSegmentIndex = index 我期待只有当用户通过触摸来更改控件时才会调用操作方法? 这仅适用于UISegmentedControl。

为什么我的Storyboard中的视图控制器会不断消失?

我的Storyboard文件中的视图控制器不断消失。 截至目前,我必须按向上箭头并突出显示每个项目以恢复我的视图控制器。 我该怎么做才能摆脱这个问题,我还能做些什么来将这些消失的视图控制器恢复到我的故事板上?

‘设置UINavigationController时,不能对类型:(null)’进行比较查询

我的应用程序崩溃在应用程序委托中。 它抛出的错误是: 由于未捕获的exception’NSInvalidArgumentException’而终止应用程序,原因:’无法对类型执行比较查询:(null)’ 我的代码如下。 我已经离开了日志记录,所以你可以看到我在检查的地方: self.viewController = [[ParseStarterProjectViewController alloc] initWithNibName:@”ParseStarterProjectViewController” bundle:nil]; NSLog(@”View controller is %@”,self.viewController); UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; NSLog(@”Nav controller is %@”,navController); NSLog(@”Self window is %@”,self.window); self.window.rootViewController = navController; 当它试图运行最后一行时,它会断开,将rootViewController设置为navController。 3条NSLog线的结果如下: View controller is Nav controller is Self window is <UIWindow: 0x1fd97c90; frame = (0 0; 320 480); opaque = NO; autoresize […]

RestKit – 发布对象并更新其属性

我有一个使用RestKit和Sinatra支持的服务器的小应用程序。 当我将用户对象发布到服务器时,服务器成功保存用户并使用新创建的用户的json表示进行响应。 这是在客户端上创建用户的代码: User *currentUser = [User currentUser]; currentUser.email = @”jacob@mail.com”; currentUser.firstName = @”Jacob”; currentUser.lastName = @”Morris”; currentUser.phone = @”2088956709″; currentUser.deviceId = @”MY-DEVICE-ID”; currentUser.password = @”password”; currentUser.passwordConfirmation = @”password”; currentUser.timeStamp = [NSNumber numberWithFloat:3987987987.12233]; //totally random RKSpecResponseLoader *loader = [RKSpecResponseLoader responseLoader]; [dataController.rkObjectManager postObject:currentUser mapResponseWith:[User rkObjectMapping] delegate:loader]; [loader waitForResponse]; NSLog(@”Current user id is now: %@”, currentUser.userId); STAssertTrue([loader […]

UINavigationBar – 更改UIBarButtonItem位置

我在我的应用程序中使用UINavigationController及其栏。 现在我想更改leftBarButtonItem和rightBarButtonItem位置。 我希望他们在不同的x和y位置,具有自定义的高度和高度。 但问题是,更改框架不会改变barButtonItem的任何内容。 我现在不知道为什么,但框架总是被重置为其原始坐标。 这是我在viewWillAppear中调用的代码: UINavigationItem *navItem = [[self.navigationBar items] lastObject]; UIView *rightview = [[UIView alloc] initWithFrame:CGRectMake(0,0,66,30)]; rightview.backgroundColor = [UIColor blueColor]; //add custom view UIBarButtonItem *search = [[UIBarButtonItem alloc] initWithCustomView:rightview]; navItem.leftBarButtonItem = search; 视图不是从0/0开始,例如x位置是5px而不是0。 有关如何解决此问题的任何建议?

是否可以在MKMapView中使用“Styled Maps”?

干杯, 大约一年后,Google允许您根据需要调整地图的样式。 它们提供了一个工具,可以轻松创建样式: Google Maps API样式化地图向导 我想知道的是:他们的API的这个function是否可以与Map Kit Framework中提供的MKMapView一起使用? 如果是这样,我将如何以及在何时将向导生成的JSON代码提供给API? 如果这不适用于MKMapView:在应用程序中包含谷歌风格地图的下一个最佳方式是什么? 非常感谢!

在滚动表格视图时点按“后退”按钮时,应用程序崩溃

我在导航视图中使用“后退”按钮显示模态表视图。 后退按钮向模态视图的委托发送消息以关闭模态视图。 如果我滚动表格视图,然后在表格视图仍在滚动时点击导航栏上的“返回”按钮,则应用程序会崩溃并显示以下消息: *** -[UILayoutContainerView setUseFastMode:]: message sent to deallocated instance 0xef74650 当我PO 106ef74650我得到这个: (int) $1 = 251086416 [no Objective-C description available] 以前有人经历过吗? 解决方法或修复方法是什么?

iOS新手。 预期的表达错误?

这个方法与我的showAnswer方法完全相同似乎很不寻常,所以我想我会问这里。 #import “QuizViewController.h” @interface QuizViewController () @end @implementation QuizViewController – (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { // Call the init method implemented by the superclass self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Create two arrays and make the pointers point to them questions = [[NSMutableArray alloc] init]; answers = [[NSMutableArray alloc] init]; // Add […]

Objective-C中的子类NSArray

我需要一个类,它具有NSArray的所有方法,其行为方式相同,但修改了2个方法。 我想在我的自定义类中覆盖这两个方法: 1)countByEnumeratingWithState:objects:count: 2)objectAtIndex: 经过数小时的研究后,我没有看到任何合理的方法,因为: 我不想使用类别,因为并非所有NSArray实例都应该具有修改后的行为。 (另外抛出警告) 我不想重写所有初始化程序加上所有的arrayWith …方法+原始方法+实现了我自己的存储(因为这个function已经在Cocoa中实现了,对不对?为什么我要重新实现a的所有function已经在那里的class级?) 如果我让我的自定义类inheritanceNSObject并使用NSArray作为ivar中的存储,那么在Xcode中编程时,所有NSArray的方法都不可用(即使我可以将它们转发到NSArray ivar) 我通过使用method_setImplementation(…)按需覆盖方法实现取得了一些成功,但仍然无法找到一种方法来动态创建在运行时创建的类,然后将自定义实现我提到的2种方法。 期待您的想法! 谢谢