小编Dav*_*vid的帖子

无法在UIAlertController中选择按钮顺序

我的印象是,如果正常动作是破坏性动作,而另一个是UIAlertController中的取消动作,则破坏性动作应位于左侧,取消应位于右侧.

如果正常动作不具有破坏性,则正常动作应该在右侧,取消应该在左侧.

那就是说,我有以下几点:

var confirmLeaveAlert = UIAlertController(title: "Leave", message: "Are you sure you want to leave?", preferredStyle: .Alert)

let leaveAction = UIAlertAction(title: "Leave", style: .Destructive, handler: {
        (alert: UIAlertAction!) in

        //Handle leave

    }
)

let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)

confirmLeaveAlert.addAction(leaveAction)
confirmLeaveAlert.addAction(cancelAction)

self.presentViewController(confirmLeaveAlert, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

我的印象是,如果我添加第leaveAction一个,那么它cancelAction就是leaveAction左边的按钮.此情况并非如此.我尝试以相反的顺序添加按钮,这也导致按钮以相同的顺序添加.

我错了吗?有没有办法实现这个目标?

ios swift ios8 uialertcontroller

10
推荐指数
2
解决办法
2510
查看次数

如何将ISO8601格式转换为毫秒?

考虑到ISO8601在JSON中的使用频率,我还没有找到一个非常简单的方法,我感到非常惊讶.

基本上,我正在使用一个看起来像这样的字符串:2014-10-23T00:35:14.800Z并将其转换为类似的字符串50 minutes ago.

首先,我要改变2014-10-23T00:35:14.800Z2014-10-23'T'00:35:14.800Z的话,我需要将其转换成毫秒的话,那很容易.

我目前的代码:

private void setTimestamp(String timeCreated) {
    int indexOfT = timeCreated.indexOf('T');

    String properFormat = new StringBuilder(timeCreated).insert(indexOfT + 1, "'")
                                                        .insert(indexOfT, "'")
                                                        .toString();

    timeStamp = (String) DateUtils.getRelativeTimeSpanString(Long.parseLong(properFormat),
                                  System.currentTimeMillis(), 
                                  DateUtils.SECONDS_IN_MILLIS);
}
Run Code Online (Sandbox Code Playgroud)

罪魁祸首是Long.parseLong(properFormat).我需要转换properFormat成毫秒.

java datetime android

9
推荐指数
2
解决办法
1万
查看次数

自动换行:break-word和word-break:break-word之间的区别

我需要在某个地方修复一些CSS,因为我的文字没有环绕,而是如果它是一个非常长的单词而无限期地继续下去.

就像在大多数情况下一样,我word-wrap: break-word;在我的CSS文件中尝试过它并没有用.

然后,令我惊讶的是,根据Google Chrome开发者工具的建议,我尝试word-break: break-word;了解决了我的问题.我对此感到震惊,所以我一直在谷歌上搜索这两者之间的区别,但我没有看到这个问题.

此外,我不认为W3没有提及它的word-break: break-word;记录行为.我在Safari和Chrome上测试了它,它在两者上都很完美,但是我很犹豫,因为我没有在任何地方提到它.word-break: break-word;

html css word-wrap word-break

9
推荐指数
1
解决办法
2636
查看次数

慢慢向下滑动以刷新UITableViewController的refreshControl会导致视图跳转

我以前在UIViewController中有一个UITableView.我会在UITableView上放置一个UIRefreshControl,在最后一点向下滑动刷新,UITableView会快速跳转.

所有答案都表达相同:未记录/意外行为(能够使用UITefreshControl与UITableView)产生这样的结果.为了缓解这个问题,我使用了一个ContainerView在UIViewController中嵌入了一个UITableViewController.

几乎已经解决了这个问题,但是......如果我慢慢向下滑动,问题仍然存在.

有什么方法可以缓解这个问题,还是我被迫忍受它?

视频:http://streamable.com/8suq

请注意,我向前滑动的前几次看起来非常好,因为我做得足够快,但是在视频结束时我真的放慢速度,你会注意到跳跃问题.

uitableview uiviewcontroller ios uirefreshcontrol

8
推荐指数
1
解决办法
409
查看次数

Ruby试图掌握一种新的符号.(注入(:)与选择(&:偶数?);为什么有&?)

所以,我刚学会了,而不是写下这样的东西:

[1,2,3,4,5].inject {|x,y| x + y} => 15
Run Code Online (Sandbox Code Playgroud)

我可以写

[1,2,3,4,5].inject(:+) => 15
Run Code Online (Sandbox Code Playgroud)

我也学会了而不是写作

[1,2,3,4,5].select {|x| x.even?} => [2,4]
Run Code Online (Sandbox Code Playgroud)

我可以写

[1,2,3,4,5].select(&:even?) => [2,4]
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么一个(选择)使用&而另一个(注入)不使用.我确信这:是因为even?并且+在符号处理,但是我想要澄清为什么&在一个:中使用以及为什么使用它.

另外,我知道我可以做的不只是injectselect.

非常感谢!

ruby syntax notation

7
推荐指数
1
解决办法
1069
查看次数

enableForegroundDispatch和disableForegroundDispatch有什么作用?

我阅读了文档,我不太明白它们是做什么的.考虑到Android做出了令人费解的决定,我们现在需要使用Android Beam将数据从一个手机发送到另一个手机,并且没有办法同时从两者发送数据到两者,我看不到用途.

我不能只拨打setNdefPushMessage一部电话,并onNewIntent在另一部电话中进行回叫,如果NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())是真的话会做一些事吗?

什么是点enableForegroundDispatchdisableForegroundDispatch

android nfc android-intent ndef nfc-p2p

6
推荐指数
1
解决办法
3441
查看次数

UITableView滚动到底部,与EstimatedRowHeight混淆

每当用户创建新注释或用户刷新UITableView时,我都会尝试滚动到我的UITableView(commentsFeed)的底部.

我使用的代码是:

func scrollToBottomOfComments() {

    var lastRowNumber = commentsFeed.numberOfRowsInSection(0) - 1
    var indexPath = NSIndexPath(forRow: lastRowNumber, inSection: 0)
    commentsFeed.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Bottom, animated: true)
}
Run Code Online (Sandbox Code Playgroud)

问题在于viewDidLoad:

commentsFeed.rowHeight = UITableViewAutomaticDimension
commentsFeed.estimatedRowHeight = 150
Run Code Online (Sandbox Code Playgroud)

这基本上表明评论可以具有动态高度,因为用户可以发布非常长的评论或非常简短的评论.

当我使用estimatedRowHeight时,我scrollToBottom没有正确地滚动到底部,因为它基本上假设我的桌子高度是commentsFeed.count * commentsFeed.estimatedRowHeight

但这不正确.

当我删除estimatedRowHeight虽然,它似乎也没有工作,我认为原因是因为它没有正确计算行高,因为行每个都有动态高度.

我该如何缓解这种情况?

编辑:应该说滚动不会在正确的位置结束,但是当我用手指在任何地方滚动时,数据会跳到应该通过滚动的位置

uitableview uiscrollview ios

6
推荐指数
1
解决办法
4488
查看次数

如何获得可靠的Volley请求,没有重试策略

当我进行慢速连接并发出POST请求时,Volley会多次重试我的请求,之后所有操作都会终止我的命令errorListener.有时,这些重试实际上成功发布了数据.

用户将假设请求失败,但事实上,如果他们刷新数据,他们会看到数据被POST两次到服务器(或者在一堆中有多次成功重试).

我想给Volley一个非常愚蠢的重试政策:

我希望它尝试15秒的请求,如果请求在15秒内没有到达服务器并返回响应以触发errorListener.我不想让它重试.

唯一值得关注的是,如果Volley尝试,请求会在20~25秒内到达服务器,但到那时它会触发errorListener并且数据仍然被POST.

HTTP是否遵循时间限制,之后100%的数据将不会被发布,因为请求花费的时间太长了?也许40秒?如果是这样,那么我可以让请求持续40秒.

在所有:

没有重试并确保100%,如果第一次尝试发布数据,successListener并且如果没有发布(请求因服务器耗时过长或错误响应而死亡)errorListener.

我正在考虑使用defaultRetryPolicy做一些事情... DefaultRetryPolicy(15000, 0, 1)虽然我认为最后一个参数并不重要,因为没有重试的退避点是什么.

我怎样才能实现我要求的两段回复?

android http android-volley

5
推荐指数
0
解决办法
1637
查看次数

有没有办法查看AdHoc应用程序的日志?

在调试模式下运行应用程序时,可以println()直接从xCode 查看日志及其调用.

我想在生产环境中测试一些内容,因此希望查看我使用AdHoc配置文件签名的应用程序的日志.有没有办法实现这个目标?怎么样?

iphone ad-hoc-distribution ios

5
推荐指数
2
解决办法
1892
查看次数

如何验证入站邮件?具体使用 SendGrid 吗?

我创建了一个使用 SendGrid 的 Inbound Parse Webhook 的应用程序。每当有人通过电子邮件发送“whatever@mydomain.com”时,电子邮件就会转到 SendGrid,然后 SendGrid 会使用包含电子邮件内容的 POST 访问我们的服务器。然后我们可以将该电子邮件数据反馈到我们的主应用程序中。

我有这一切。但是现在我不知道我应该如何验证 SendGrid 发布到我们服务器的消息。有谁知道这样做的最佳行动方案?验证我们的入站电子邮件实际上来自我们主应用程序的授权用户?

显然我们可以检查标题中的“发件人”地址,但我已经读到这些可以完全欺骗。显然,来自 SendGrid 的传入邮件的两个属性“dkim”和“spf”与授权有关。但是我在文档中或其他任何地方都找不到任何内容,这告诉我应该如何使用这些“dkim”和“spf”字段来验证消息的真实性。

如果有人有任何帮助,一般的、具体的或其他方面的……将不胜感激。提前致谢。

email authentication inbound sendgrid

5
推荐指数
1
解决办法
564
查看次数