我有以下代码:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)recognizer shouldReceiveTouch:(UITouch *)touch {
NSLog(@"%@", NSStringFromCGPoint([recognizer locationInView:self.view]));
...
Run Code Online (Sandbox Code Playgroud)
然而,每当我点击时,我都会得到{0, -64}.无论我在哪里点击.我究竟做错了什么?
无论我似乎尝试什么,在用户选择通过电子邮件发送链接时出现的电子邮件屏幕(它是a MFMailComposeViewController),按钮始终是默认的蓝色.
我在我的AppDelegate中有这个:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0.000 green:156/255.0 blue:51/255.0 alpha:1]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName: [UIColor whiteColor] }];
Run Code Online (Sandbox Code Playgroud)
它确实为标题MFMailComposeViewController而不是按钮着色.我该如何做到这一点?
当我在其他地方把它变成白色时,它也会使我的状态栏保持黑色.
objective-c ios uiappearance ios7 mfmailcomposeviewcontroller
我与AFNetworking 1.0进行了这个调用,它返回了一个responseObject包含我想要的API的数据:
[[AFDiffbotClient sharedClient] postPath:@"http://diffbot.com/api/batch" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何处理responseObject.
如果我检查[responseObject class]我得到NSData.
如果我NSLog(@"%@", responseObject)得到一堆数字(我假设的内存地址):
<5b0a7b22 68656164 65727322 3a5b7b22 6e616d65 223a6e75 6c6c2c22 76616c75 65223a22 48545450 2f312e31 20323030 204f4b22 7d2c7b22 6e616d65 223a2244 61746522 2c227661 ...
如果我做:
NSString *responseString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@", responseString);
Run Code Online (Sandbox Code Playgroud)
我得到了我想要的输出!但是,这是一个NSString.
如果我做:
NSError *error;
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:&error];
NSLog(@"%@", responseDictionary);
Run Code Online (Sandbox Code Playgroud)
我得到了一个NSDictionary,但它缺少绝大多数的响应(即:我没有得到该NSString方法所包含的内容).
我该如何处理这个对象?
我正在使用RedditKit将Reddit集成到一个应用程序中,而在Objective-C中,我调用API如下(并且它工作正常):
[[RKClient sharedClient] signInWithUsername:@"username" password:@"password" completion:^(NSError *error) {
RKPagination *pagination = [RKPagination paginationWithLimit:100];
[[RKClient sharedClient] linksInSubredditWithName:subredditSelected pagination:pagination completion:^(NSArray *collection, RKPagination *pagination, NSError *error) {
// code that executes on completion
}];
}];
Run Code Online (Sandbox Code Playgroud)
这是我在Swift中调用它的方式:
RKClient.sharedClient().signInWithUsername("username", password: "password", completion: { (error: NSError!) in
RKClient.sharedClient().frontPageLinksWithPagination(RKPagination(limit: 50), completion: { (collection: RKLink[]!, pagination: RKPagination!, error: NSError!) in
// code that executes on completion
})
})
Run Code Online (Sandbox Code Playgroud)
但是我一直在使用Swift版本得到这个错误:
找不到接受提供的参数的'init'的重载
编辑:这是一个显示它的示例项目:http://cl.ly/3K0i2P1r3j1y
在Objective-C中,使用符合协议并设置委托以允许两个对象相互通信是一种非常常见的范例.这部分是,他们没有任择议定书必须实现.
似乎Swift并不认为这是它的语言的一部分.它有协议,但为了将协议中的方法标记为可选,协议需要一个objc前缀,告诉我它也是一个Objective-C遗物?
我们应该做些什么而不是Swift-esque?通过花哨的关闭或什么?
我有一个UIButton在我的应用程序中,而不是文本我给它一个图像,因为它服务器作为缩略图按钮,将在点击时呈现完整的图像.
我看到这个答案似乎是可接受的实现,但是图像小于按钮本身,图像视图实际上并不像contentMode那样填充按钮,或者像图像视图一样,如下所示:

如您所见,使用图像视图可以正确扩展,但使用按钮则不会.(按钮背景设置为蓝色,以便您可以看到它未显示的位置.)
我正在做的代码很简单:
myButton.setImage(UIImage(named: "pokemon"), forState: .Normal)
myButton.imageView!.contentMode = .ScaleAspectFill
Run Code Online (Sandbox Code Playgroud)
如何更改它以使其正确填充?
示例项目: http ://cl.ly/0z2T1A1Z3v3m
我正在编写一个小型的Web服务器程序,它会从POST请求中进行大量的JSON解码.
最初我认为,不是json.Decoder每次请求进入时都初始化一个新的,我将它作为一个全局变量,每次都被调用,并与goroutines同时解码.
作为Go的新手,这可以吗?是否有时候我不应该这样做,并且由于不是线程安全而且课程会变得怪异(我猜"goroutine"安全会更好)?
说JSON看起来像这样:
[
{
"name": "Spot",
"breed": "dalmation"
},
{
"color": "green",
"eats": "lettuce"
},
{
"color": "brown",
"eats": "spinach"
},
{
"color": "yellow",
"eats": "cucumbers"
}
]
Run Code Online (Sandbox Code Playgroud)
从API返回的JSON响应中的第一项始终是狗,而之后的所有项都是乌龟.因此项目0是狗,项目1到N-1是海龟.
我如何将其解析为我可以阅读的内容,例如:
struct Result: Codable {
let dog: Dog
let turtles: [Turtle]
}
Run Code Online (Sandbox Code Playgroud)
可能吗?
我希望每隔2秒就会出现一些不同的东西,10次.我将如何在Objective-C中实现这一目标?
我正在考虑使用NSTimer并在这么多秒后使其失效,就像上面的例子在我启动计时器后2*10秒.或者有没有办法测量蜱?
或者我正在考虑使用for循环并使用performSelector:withDelay:方法.
哪个更好?
ios ×6
objective-c ×6
cocoa-touch ×3
swift ×3
json ×2
afnetworking ×1
css ×1
go ×1
ios5 ×1
ios6 ×1
ios7 ×1
ios8 ×1
jekyll ×1
jsondecoder ×1
mfmailcomposeviewcontroller ×1
nsdata ×1
nsdictionary ×1
nstimer ×1
protocols ×1
pygments ×1
struct ×1
uiappearance ×1
uibutton ×1
uiimageview ×1
uiview ×1