在Xcode 6中,iOS模拟器似乎没有显示键盘,这意味着您可以键入但无法看到软件键盘的定位和效果,或者显示软件键盘,这意味着您可以在屏幕上看到它,但是可以键入它 - 用鼠标在软键盘上打字真的很慢!
如何恢复旧的行为,在哪里可以看到软件键盘,但在硬件上键入?
我有以下测试代码:
CGFloat endRed, endGreen, endBlue, endAlpha;
[[UIColor greenColor] getRed:&endRed green:&endGreen blue:&endBlue alpha:&endAlpha];
Run Code Online (Sandbox Code Playgroud)
我在一个UIView类的drawRect方法中调用.此代码失败,但有异常
2011-11-06 02:29:28.671 Chartous[13457:b303] -[UICachedDeviceRGBColor getRed:green:blue:alpha:]: unrecognized selector sent to instance 0x4e7ea10
2011-11-06 02:29:28.673 Chartous[13457:b303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UICachedDeviceRGBColor getRed:green:blue:alpha:]: unrecognized selector sent to instance 0x4e7ea10'
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
我遇到了一些麻烦NSLayoutConstraint.
如果我尝试constant使用该setConstant:方法进行更改,NSLayoutConstraint会给我一个例外.当我通过代码添加高度约束时,我只有这个问题.
首先,我得到高度限制,如下:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d", NSLayoutAttributeWidth];
NSArray *filteredArray = [[self constraints] filteredArrayUsingPredicate:predicate];
return filteredArray[0];
Run Code Online (Sandbox Code Playgroud)
这给了我正确的约束.我有一个NSTextField子类,这是完美的.约束在Interface Builder中设置,我可以设置和更改常量.
现在我有一个视图,我在运行时添加不同的子视图.这些子视图位于自己的NIB中,这意味着我无法固定它们的宽度和高度.所以我认为一旦将视图添加到superview,我就会添加约束.这是在执行viewDidMoveToSuperview.
// Pin Width & Height
[self addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:self.frame.size.width]];
[self addConstraint:[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0f
constant:self.frame.size.height]];
Run Code Online (Sandbox Code Playgroud)
添加了约束,我可以使用NSLog确认.
"<NSLayoutConstraint:0x100605cc0 H:[ITControlPanelChildView:0x100616eb0(269)]>",
"<NSLayoutConstraint:0x100614410 V:[ITControlPanelChildView:0x100616eb0(317)]>"
Run Code Online (Sandbox Code Playgroud)
现在,最后,当我尝试使用[constraint setConstant:somethingDifferent];I 来改变约束时,我得到以下异常:
Unable to simultaneously satisfy constraints:
(
"<NSLayoutConstraint:0x10192fcb0 V:[ITControlPanelChildView:0x10192e4f0(100)]>",
"<NSAutoresizingMaskLayoutConstraint:0x10053ff10 h=--& v=&-- V:[ITControlPanelChildView:0x10192e4f0(317)]>"
)
Will attempt to recover …Run Code Online (Sandbox Code Playgroud) 寻找在单独的文件或替代解决方案中使用Swift扩展的方法.只有在将扩展名写入正在使用的文件中时,才能创建扩展.
这是一个有效的ViewController.swift示例.
import UIKit
var TestHelper: String = "Start Value"
extension UIView {
var testValue:String{
set{
TestHelper = newValue
}
get{
return TestHelper
}
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.testValue = "Some Value"
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Run Code Online (Sandbox Code Playgroud)
将扩展名从此文件中取出并放入新文件会导致崩溃,从而导致此错误:
Program ended with exit code: 9
Run Code Online (Sandbox Code Playgroud)
这个错误说我认为它不存在.在扩展所需的每个单独文件中创建扩展名显然会产生无效重新声明的问题.
提前致谢!
我有一个录制视频的应用.该应用程序是cocos2d和UIKit的混合,虽然使用UIImagePickerController的部分都是UIKit.
问题:拍摄视频后,当您点击"使用"按钮时,按钮会切换到选定状态,然后没有任何反应."重新启动"按钮被禁用.您仍然可以播放/暂停视频,但视图永远不会被忽略,- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info也永远不会被调用.
问题发生在长短(<5秒)的视频中.导致内存警告无法重现该问题.在启动图像选择器之前更改音频会话也不会重现问题.
我一直无法解决这个问题.它偶尔会发生.有任何想法吗?
这是呈现UIImagePickerController的代码
UIImagePickerController *tmpVC = [[UIImagePickerController alloc] init];
tmpVC.delegate = self;
tmpVC.allowsEditing = YES;
// First get the right media types for the right source
NSArray *types = nil;
if (useCamera)
{
types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
tmpVC.sourceType = UIImagePickerControllerSourceTypeCamera;
}
else
{
types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
tmpVC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
// Then see if "movie" is in there
for (NSString *mediaType in types)
{
if ([mediaType isEqualToString:(NSString*)kUTTypeMovie])
{
tmpVC.mediaTypes = [NSArray …Run Code Online (Sandbox Code Playgroud) 我正在为我的项目添加Zxing 1.7(Qr扫描仪).
我将Mac OS X升级到Lion和xcode4.2,iOS5.0.
问题是当我运行项目时,我总是看到"未找到iostream文件".
我运行scanTest(从Zxing团队提供的Qr扫描仪测试示例代码),但它运行良好.
所以,我比较我的项目和scanTest,但我发现没有任何区别.
我该怎么做才能解决这个问题?
我正在使用一个简单的命令行应用程序来处理内存(de)分配内容,该应用程序适用于使用启用了ARC的Xcode版本4.2.1构建的Mac OSX 10.7以及默认的构建设置.我无法解释我从ARC的理解中得到的行为,所以我希望有人可以解释这里发生了什么.
首先,在下面的代码中我得到了我期望的行为(请注意NLog()输出在相应语句后的注释中给出)
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSObject *objPtr1 = [[NSObject alloc] init];
NSObject *objPtr2 = objPtr1;
__weak NSObject *weakRef = objPtr1;
NSLog(@"%@", [objPtr1 description]); // <NSObject: 0x1001107d0>
objPtr1 = nil;
NSLog(@"%@", [objPtr2 description]); // <NSObject: 0x1001107d0>
objPtr2 = nil;
NSLog(@"%@", [weakRef description]); // (null)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以在上面,在分配了weakRef之后,NSObject实例有两个强指针,因此保留计数为2.在将objPtr1归零后,还有一个保留指向实例的指针,因此它仍然在内存中并响应说明消息.在nir-ing objPtr2之后,没有指向该对象的强指针并且它被解除分配(我假设它是,因为weakRef已被置零).到现在为止还挺好.
现在,相同的代码有一个小的变化:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
NSObject *objPtr1 = [[NSObject alloc] init];
NSObject *objPtr2 …Run Code Online (Sandbox Code Playgroud) 我遇到这个核心数据错误真的很糟糕.
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'statement is still active'
Run Code Online (Sandbox Code Playgroud)
我的应用程序和代码一切正常,除非偶尔调用请求很快.它发生在我试图打破应用程序时.从一个屏幕到下一个屏幕,下载数据并执行获取请求.
我知道它与线程和核心数据有关.
我从后台线程调用这段代码,它有自己的托管对象上下文.
+ (AN_User *)updateWithRecord:(NSDictionary *)record moc:(NSManagedObjectContext *)moc{
NSNumber *userID = nil;
NSString *username = nil;
if([record objectForKey:@"user_id"]){
userID = [NSNumber numberWithInt:[[record objectForKey:@"user_id"] intValue]];
}else if([record objectForKey:@"id_member"]){
userID = [NSNumber numberWithInt:[[record objectForKey:@"id_member"] intValue]];
}
if([record objectForKey:@"username"]){
username = [NSString stringWithFormat:@"%@", [record objectForKey:@"username"]];
}else if([record objectForKey:@"member_name"]){
username = [NSString stringWithFormat:@"%@", [record objectForKey:@"member_name"]];
}
if(!userID||!username){
return nil;
}
__block AN_User *user = nil;
[moc performBlockAndWait:^{
NSFetchRequest *request …Run Code Online (Sandbox Code Playgroud) 我必须在这里遗漏一些非常明显的东西,但这是一个让DAYS感到沮丧的问题.
在xcode 4.5上的iOS项目中,我在XIB中有几个标签,一个在另一个上面,在一个UIScrollView占用一个UIView.每个标签都与视图一样宽,每个标签比下一个标签高约20 px.有时,其中一个标签没有任何信息,因此它被设置为不可见,并且它下面的标签应该向上移动以占据空白区域.
问题是,如果在视图上"关闭"自动布局,则标签会尽可能地向上移动,但UIScrollView不再滚动.如果它打开,标签根本不移动,无论如何.
这是代码...我基本上只是使用快速功能将每个标签向上移动不可见标签的高度.
[self moveObjectBy: self.festNameLabel moveByY:-(yearsLabel.frame.size.height-2)];
// this just quickly moves a label.
- (void)moveObjectBy:(UIView *)lbl moveByY:(int)byHeight {
CGRect newFrame = lbl.frame;
NSLog(@"%f, %d", newFrame.origin.y, byHeight);
newFrame.origin.y += byHeight; //yearsLabel.frame.size.height;
lbl.frame = newFrame;
}
Run Code Online (Sandbox Code Playgroud)
当它运行时,NSLog显示Y已移动,但它不会在屏幕上移动.我确定它与垂直空间约束有关,但它不会让我删除约束,它不会让我从视图顶部将其更改为空间以外的任何内容.就像我说的,我确定我错过了什么,但我已经筋疲力尽了我所知道的一切......