小编bra*_*ipt的帖子

在Objective-C中将货币字符串转换为浮点数

我的目标很简单,我有一个存储本地化货币值的文本字段(例如$ 1,000.00),我需要从文本字段中取回该值作为浮点数来对文本字段执行某些测试.

代码非常简单,首先我将NSNumber格式化为localizedString,如下所示:

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
textfield.text = [formatter stringFromNumber:number];
Run Code Online (Sandbox Code Playgroud)

一切正常,但我做相反的事情从这个本地化的字符串得到doubleValue:

NSNumberFormatter* formatter = [[NSNumberFormatter alloc] init];
formatter.locale = [NSLocale currentLocale];
formatter.numberStyle = NSNumberFormatterCurrencyStyle; //also tested with NSNumberFormatterDecimalStyle

double d = [formatter numberFromString:textfield.text].doubleValue;
Run Code Online (Sandbox Code Playgroud)

问题是格式化程序只返回我的字符串的整数值而不是小数,更糟糕的是,如果它是加拿大本地化字符串(20 000,00 $),它只返回20.

我一直在寻找一段时间,但却找不到任何关于这种行为的信息.解决方法当然是在将NSNumber格式化之前存储到文本字段然后测试这个nsnumber,但我真的不觉得它很漂亮.

objective-c nsstring nsnumberformatter ios swift

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

Chrome 为打印的透明 png/gif 添加灰色轮廓

我正在浏览器中处理打印到 pdf 的打印模板,并在一个部分使用透明的 .png 覆盖。

透明 .png 文件和透明 .gif 文件都会发生这种情况

Chrome 在打印时(包括 .pdf 和打印预览窗口),似乎用 1px 灰线勾勒出透明图像:

附件A:

在此处输入图片说明

我已经在其他几个浏览器(包括 Safari)中尝试过这个,但似乎没有一个能像 Chrome 那样做。有没有人见过这个?我需要找到一种方法来禁用它或在 Chrome 端破解它,以便它可以跨浏览器工作。

要查看此操作,请单击此处:http : //jsfiddle.net/brandonscript/nELwd/(只是一个<img />标签)并按 Cmd/Ctrl+P 以显示打印预览。您可以在预览看到这如果打印为pdf。确保您启用了“背景颜色和图像”,否则您将看不到任何图像。

注意:我不会在打印寻找解决方法,我知道如果您将图像大小调整为 100% 并以 100% 缩放查看 .pdf,您将看不到灰线。我需要在打印 .pdf 之前以编程方式(或以其他方式)删除灰线。

css browser printing google-chrome

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

如何降低双指缩放 UIGestureRecognizer 的速度

我创建了一个UIGestureRecognizer很像this one

- (void)handlePinchGesture:(UIPinchGestureRecognizer *)gestureRecognizer {

    if([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
        // Reset the last scale, necessary if there are multiple objects with different scales
        lastScale = [gestureRecognizer scale];
    }

    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || 
        [gestureRecognizer state] == UIGestureRecognizerStateChanged) {

        CGFloat currentScale = [[[gestureRecognizer view].layer valueForKeyPath:@"transform.scale"] floatValue];

        // Constants to adjust the max/min values of zoom
        const CGFloat kMaxScale = 2.0;
        const CGFloat kMinScale = 1.0;

        CGFloat newScale = 1 -  (lastScale - [gestureRecognizer scale]); …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uipinchgesturerecognizer

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

iOS在openURL之后关闭Safari页面

我需要使用使用OAuth2的自定义Web服务授权用户.

为此,我创建了一个重定向到Safari并显示Web服务登录的按钮.

登录后,Web Service将自定义方案URL重定向到我的应用程序.一切正常,但Safari Page(用于登录)仍然是开放的.

使用自定义Scheme重定向后,当它返回我的应用程序时,可以关闭此Safari"卡"吗?

objective-c ios7

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

崩溃日志表明应用程序在我的应用程序中不存在的UIPopoverPresentationController方法崩溃

我收到崩溃日志,说我的应用程序正在崩溃[UIPopoverPresentationController presentationTransitionWillBegin],但在我的代码中没有使用UIPopoverPresentationController.一切都在iPad上,我使用的UIDocumentInteractionController看起来很相似,也许它是UIPopoverPresentationController的子类,我不知道.知道是什么原因引起的吗?

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note:  EXC_CORPSE_NOTIFY
Triggered by Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x184799900 __exceptionPreprocess + 124 (NSException.m:162)
1   libobjc.A.dylib                 0x183e07f80 objc_exception_throw + 56 (objc-exception.mm:531)
2   UIKit                           0x189db43a0 -[UIPopoverPresentationController presentationTransitionWillBegin] + 2884 (UIPopoverPresentationController.m:1197)
3   UIKit                           0x1897e82fc __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 1640 (UIPresentationController.m:1136)
4   UIKit                           0x1897e6414 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 332 (UIPresentationController.m:704)
5   UIKit                           0x18973cb70 _runAfterCACommitDeferredBlocks + 292 (UIApplication.m:2312)
6   UIKit                           0x18974a030 _cleanUpAfterCAFlushAndRunDeferredBlocks + 92 (UIApplication.m:2290)
7   UIKit                           0x18947dc24 _afterCACommitHandler + 96 …
Run Code Online (Sandbox Code Playgroud)

objective-c crash-reports uikit ipad ios

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

将父容器的平移手势移交给嵌套的UICollectionView

我正在尝试构建一个复杂的拆分视图容器控制器,它有助于两个可变高度容器,每个容器都有自己的嵌套视图控制器.父控制器上有一个全局平移手势,允许用户在视图容器中的任何位置拖动,并在视图之间向上和向下滑动"分隔符".它还有一些智能位置阈值检测逻辑,可以扩展任一视图(或重置分频器位置):

     

这很好用.还有很多代码可以构建它,我很乐意与大家分享,但我认为它不相关,所以暂时我会省略它.

我现在试图通过向底部视图添加集合视图来使事情复杂化:

我已经能够解决这个问题,这样我就可以用一个决定性的平移手势滚动拆分视图,然后快速轻弹手指滚动收集视图(滑动手势,我想它是?),但是这个是一个非常低级别的体验:您无法平移视图并同时滚动集合视图,并期望用户始终如一地复制相似但不同的手势以控制视图对于交互来说太难了.

为了尝试解决这个问题,我尝试了几种委托/协议解决方案,其中我在拆分视图中检测分隔符的位置,canCancelTouchesInViewisUserInteractionEnable根据底部视图是否完全展开来启用/禁用和/或在集合视图上.这在某种程度上有效,但在以下两种情况下则不然:

  1. 当拆分视图分隔符处于其默认位置时,如果用户平移到底部视图完全展开的位置,然后继续向上平移,则集合视图应开始滚动直到手势结束.
  2. 当拆分视图分隔符位于顶部(底部容器视图完全展开)且集合视图不在顶部时,如果用户平移,则集合视图应滚动而不是拆分视图分隔符移动,直到集合视图到达其顶部位置,此时拆分视图应返回其默认位置.

这是一个说明此行为的动画:

在此输入图像描述

鉴于此,我开始认为解决问题的唯一方法是在分割视图上创建一个委托方法,告诉集合视图何时底部视图处于最大高度,然后可以拦截父级的平移手势或向前相反,屏幕会触及集合视图吗?但是,我不知道该怎么做.如果我使用解决方案走在正确的轨道上,那么我的问题很简单:我如何将平移手势转发或移交到集合视图,并使集合视图的交互方式与通过触摸捕获的方式相同它在第一位?我可以做的东西pointInsidetouches____方法?

如果我不能这样做,我怎么能解决这个问题呢?


更新赏金猎人:我有一些零碎的运气在集合视图上创建委托方法,并在拆分视图容器上调用它来设置属性shouldScroll,通过它我使用一些平移方向和定位信息来确定是否滚动视图应滚动.然后我在UIGestureRecognizerDelegate' gestureRecognizer:shouldReceive touch:委托方法中返回此值:

// protocol delegate
protocol GalleryCollectionViewDelegate {
    var shouldScroll: Bool? { get }
}

// shouldScroll property
private var _shouldScroll: Bool? = nil
var shouldScroll: Bool {
    get {
        // Will attempt to retrieve delegate value, or self set value, or return false
        return self.galleryDelegate?.shouldScroll ?? self._shouldScroll ?? false
    } …
Run Code Online (Sandbox Code Playgroud)

iphone uiscrollview ios uipangesturerecognizer swift

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

Objective-C:NSTimer和倒计时

我知道我应该了解Apple的NSTimer文档,但我不知道!我也读了很多关于它的问题,但找不到适合我的情况.那么这里是:

用户通过文本字段输入小时和分钟.我将它们转换为整数并将它们显示在"countDownLabel"中.

  1. 如何将计数降至零?
  2. 显示用户没有导入的秒数会很好,但我想它不会很难显示.
  3. 怎么有人可以通过按UIButton来停止这个程序?

我知道我要求很多...如果有人可以提供帮助我真的很感激!

int intHourhs;
intHourhs=([textHours.text intValue]);
int intMinutes;
intMinutes=([textMinutes.text intValue]);
int *intSeconds;
intSeconds=0;

NSString *stringTotalTime=[[NSString alloc] initWithFormat:@"%.2i:%.2i:%.2i",intHourhs,intMinutes,intSeconds]; 
[countDownLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:45]];
countDownLabel.text=stringTotalTime;
Run Code Online (Sandbox Code Playgroud)

objective-c nstimer countdown xcode4

4
推荐指数
1
解决办法
7586
查看次数

处理Array.prototype.slice.call(参数)的更简洁方法

我正在编写几个采用不同类型参数的函数。这样,只需执行以下操作即可:

var myFunc = function() {
    var args = Array.prototype.slice.call(arguments)
}
Run Code Online (Sandbox Code Playgroud)

...而不是尝试直接在函数声明的参数字段中处理所有不同的可能性,例如:

var myFunc = function(param1, param2, param3) {
    if (param3) {
        // etc.
    }
}
Run Code Online (Sandbox Code Playgroud)

Array.prototype.slice.call(arguments)不过,这会增加代码很多,并降低了可读性。我试图弄清楚是否有一种方法可以编写一个可以完成与相同功能Array.prototype.slice.call()但更简洁易读的辅助函数。我正在尝试类似的东西:

var parseArgs = function() {
    return Array.prototype.slice.call(arguments)
}

var foo = function() {
    console.log(parseArgs(arguments))
}

foo('one', 'two', 'three')
// [Arguments, ['one', 'two', 'three']]
Run Code Online (Sandbox Code Playgroud)

但这显然行不通。

javascript node.js

4
推荐指数
1
解决办法
644
查看次数

什么是Swift相当于[UIColor colorWithWhite:alpha]

这在Objective-C中返回默认的iOS禁用灰色:

[UIColor colorWithWhite: 0.70 alpha:1];
Run Code Online (Sandbox Code Playgroud)

似乎没有任何原生的Swift功能:

UIColor.colorWithWhite(0.70, alpha: 1)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种不同的方式,UIColor在Swift中实现了这个我不知道的方式?我似乎无法在文档中找到任何内容.如果没有,那么extension这种方法适合什么?

uicolor swift

4
推荐指数
1
解决办法
2265
查看次数

UICollectionView 单元格在 reloadData() 上调整大小不正确

我的视图有一个表视图,每行都有一个集合视图。集合单元格有一个文本字段(及其子类)、一个标签和一个文本视图,它们都是全尺寸的,并且除了一个之外的所有单元格都根据单元格位置隐藏。

当编辑其中一个文本字段时,委托 (CollectionView) 将新值传递回视图控制器以更改数组,然后重新加载适当的单元格,因为其中有计算数据。

问题是第二次编辑其中一个文本字段时,两个单元格交换宽度,如果您再编辑文本字段两次,似乎会交换回来,但边框仍处于错误的位置。

初始加载后的表:

两次改变数量后的表格

文本字段和视图委托方法

    func textFieldDidEndEditing(_ textField: UITextField) {
        let currencyField = textField as! CurrencyField
        let indexPath = indexPathForCellWithSubview(cellSubview: textField)!
        (dataSource as! DetailViewController).changeData(tableRow: tag, collectionItem: indexPath.row, newData: currencyField.decimal)
        let indexPaths: [IndexPath] = [IndexPath(row: 1, section: 0),IndexPath(row: 2, section: 0),IndexPath(row: 4, section: 0),IndexPath(row: 5, section: 0)]

        collectionViewLayout.invalidateLayout()
        reloadItems(at: indexPaths)
    }

    func textViewDidEndEditing(_ textView: UITextView) {
        let indexPath = indexPathForCellWithSubview(cellSubview: textView)!
        let indexPaths: [IndexPath] = [IndexPath(row: 1, section: 0),IndexPath(row: 2, section: 0),IndexPath(row: 4, section: 0),IndexPath(row: 5, section: 0)] …
Run Code Online (Sandbox Code Playgroud)

ios swift

4
推荐指数
1
解决办法
3186
查看次数