Questions tagged «cocoa-touch»

驱动iOS应用程序的Cocoa Touch框架共享在Mac上发现的许多成熟模式,但它们的构建特别着重于基于触摸的界面和优化。

4
对齐UIToolBar项目
我UIBarButtonItem创建了三个如下。它们向左对齐,我想对齐中心,因此右侧没有间隙。我看不到的align属性UIToolBar。还有另一种方法可以做到这一点吗? //create some buttons UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)]; [toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]]; //Add the toolbar as a subview to the navigation controller. [self.navigationController.view addSubview:toolbar];


11
在iOS应用程序中哪里存储全局常量?
我的iOS应用程序中的大多数模型都查询Web服务器。我想要一个配置文件来存储服务器的基本URL。它看起来像这样: // production // static NSString* const baseUrl = "http://website.com/" // testing static NSString* const baseUrl = "http://192.168.0.123/" 通过注释掉一行或另一行,我可以立即更改模型指向的服务器。我的问题是,在iOS中存储全局常量的最佳实践是什么?在Android编程中,我们具有此内置字符串资源文件。在任何Activity中(等效于UIViewController),我们都可以使用以下方法检索这些字符串常量: String string = this.getString(R.string.someConstant); 我想知道iOS SDK是否有类似的位置来存储常量。如果不是,那么Objective-C的最佳实践是什么?



12
iOS应用程序:如何清除通知?
我有一个iOS应用程序,其中向其中发送了一些推送通知。我的问题是,在点击邮件/通知后,它们会留在iOS的通知中心中。下次打开应用程序时,如何在通知中心中为我的应用程序删除通知? 我碰到过有人呼吁setApplicationIconBadgeNumber零值清除通知的帖子。对我来说这似乎很奇怪,所以我相信也许存在另一种解决方案? 编辑1: 我在清除通知时遇到了一些问题。请在这里查看我的代码: - (void) clearNotifications { [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0]; [[UIApplication sharedApplication] cancelAllLocalNotifications]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions != nil) { NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; if (dictionary != nil) { NSLog(@"Launched from push notification: %@", dictionary); [self clearNotifications]; } } return YES; } …



6
AVAudioPlayer在调试模式下引发断点
每次加载应用程序时,它都会停止,就好像在此行上设置了断点一样: self.audioPlayer = [[[AVAudioPlayer alloc] initWithData:[dataPersister loadData:self.fileName] error:&outError] autorelease]; 该行上方或附近没有任何断点。它仅在我以调试模式运行应用程序时发生,并且断点后没有崩溃。当我单击“继续执行程序”时,该应用程序没有任何反应。 这是loadData方法,用调用initWithData: -(NSData*)loadData:(NSString*)fileName { NSString *dataPath = [self.path stringByAppendingPathComponent:fileName]; dataPath = [dataPath stringByStandardizingPath]; NSData *data = [[[NSData alloc] initWithContentsOfFile:dataPath]autorelease ]; return data; } loadData函数似乎工作正常。所请求的mp3文件在断点之后被加载并播放,没有任何问题。 你知道我在做什么错吗? 编辑: 当它在断点处停止时,我运行了回溯。这是输出: (lldb)bt *线程#1:tid = 0x1c03,0x30df1724 libc ++ abi.dylib`__cxa_throw,停止原因=断点1.2 帧#0:0x30df1724 libc ++ abi.dylib`__cxa_throw 框架#1:0x36403a24 AudioToolbox`ID3ParserHandle :: …

4
了解NSRunLoop
谁能解释什么NSRunLoop?据我所知NSRunLoop,这与NSThread权利有关吗?所以假设我创建一个像 NSThread* th=[[NSThread alloc] initWithTarget:self selector:@selector(someMethod) object:nil]; [th start]; -(void) someMethod { NSLog(@"operation"); } 所以在这个主题完成工作后,对吗?为什么使用RunLoops或在哪里使用?从苹果文档中我读了一些东西,但对我来说还不清楚,所以请尽可能简单地解释一下

15
如何使UILabel显示轮廓文本?
我只需要在白色UILabel文字周围添加一个像素的黑色边框。 我使用下面的代码将UILabel子类化,从一些与切向相关的在线示例中我巧妙地将它们拼凑在一起。它可以工作,但速度非常非常慢(除了在模拟器上),而且我也无法使其垂直居中放置文本(因此我暂时将y值硬编码在最后一行)。啊! void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) { CGContextSetTextDrawingMode(gc, kCGTextInvisible); CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str)); CGPoint pt = CGContextGetTextPosition(gc); CGContextSetTextDrawingMode(gc, kCGTextFillStroke); CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str)); } - (void)drawRect:(CGRect)rect{ CGContextRef theContext = UIGraphicsGetCurrentContext(); CGRect viewBounds = self.bounds; CGContextTranslateCTM(theContext, 0, viewBounds.size.height); CGContextScaleCTM(theContext, …

23
键盘出现时如何滚动UIScrollView?
我的代码有问题。我正在尝试UIScrollView在编辑UITextField时应移动键盘弹出键隐藏的。 我现在正在移动主机,因为我不知道如何在代码中“向上滚动”。因此,我做了一些代码,它工作正常,但是当我编辑一个UItextfield并切换到另一个UITextField而不按“返回”按钮时,主视图会变得很远。 我对NSLog()变量的大小,距离和textFieldRect.origin.y进行了设置,如下所示。当我将两个UITextField放在同一位置(y原点)并且执行此特定的“切换”(不按回车键)时,我得到的数字是相同的,而我的代码在第一次UITextField编辑时效果很好,但在第二次编辑时效果不佳。 看一下这个: - (void)textFieldDidBeginEditing:(UITextField *)textField { { int size; CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField]; size = textFieldRect.origin.y + textFieldRect.size.height; if (change == FALSE) { size = size - distance; } if (size < PORTRAIT_KEYBOARD_HEIGHT) { distance = 0; } else if (size > PORTRAIT_KEYBOARD_HEIGHT) { distance = …

3
在输入击键时获取UITextField的值?
假设我有以下代码: IBOutlet UITextField* nameTextField; IBOutlet UILabel* greetingLabel; 我希望greetingLabel用户按下任意键后立即阅读“ Hello [nameTextField]”。 我基本上需要的是与Cocoa委托方法等效的iPhone controlTextDidChange。 的textField:shouldChangeCharactersInRange:委托方法被称为每个键击发生时: - (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 字符串参数返回被按下的字符。但是,实际textField的值(nameTextField.text)保留为空白。 我在这里想念什么?(我想nameTextField反映用户到目前为止输入的确切字符串)。

6
如何导出“胖”可可触摸框架(用于模拟器和设备)?
使用Xcode 6,我们可以创建自己的Dynamic Cocoa Frameworks。 因为: 模拟器仍在使用32-bit库 从2015年6月1日开始,提交给App Store的应用程序更新必须包含64位支持,并使用iOS 8 SDK(developer.apple.com)构建 我们必须制作胖子库才能在设备和模拟器上运行项目。即在Frameworks中同时支持32位和64位。 但是我没有找到任何手册,没有找到如何导出通用的Fat Framework以便将来与其他项目集成(以及与他人共享该库)的手册。 这是我复制的步骤: 设置ONLY_ACTIVE_ARCH=NO在Build Settings armv7 armv7s arm64 i386 x86_64为Architectures(肯定)添加支持 构建框架并在Finder中打开它: 将此框架添加到另一个项目 实际结果: 但是最后,我仍然无法立即在设备和模拟器上运行带有此框架的项目。 如果我从Debug-iphoneos文件夹中获取框架-它可以在设备上运行并在模拟器上出错:ld: symbol(s) not found for architecture i386 xcrun lipo -info CoreActionSheetPicker 胖文件:CoreActionSheetPicker中的体系结构为:armv7 armv7s arm64 如果我从Debug-iphonesimulator文件夹中获取框架-它可以在模拟器上使用。我在设备上有错误:ld: symbol(s) not found for architecture arm64 xcrun lipo -info CoreActionSheetPicker …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.