小编eme*_*gro的帖子

如何检测UITableView的加载结束

我想在加载完成后更改表的偏移量,并且该偏移量取决于表上加载的单元格数.

是否可以通过SDK知道uitableview加载何时完成?我在委托和数据源协议上都没有看到任何内容.

我不能使用数据源的计数,因为只加载可见单元格.

iphone uitableview ios

137
推荐指数
9
解决办法
13万
查看次数

隐藏UITextField的光标

我使用的是UITextFieldUIPickerView它的inputView,这样当用户点击文本字段,一个选择器被召唤为他们选择一个选项.

几乎所有的作品,但我有一个问题:光标仍然闪烁的文本字段时,它是积极的,这是丑陋和不恰当的,因为用户不希望被输入到现场,并没有跟键盘.我知道我可以通过设置hackily解决这个问题editing,以NO文本字段,并对其进行监视触摸,或通过使用自定义风格的按钮替换它,召唤通过代码选择器.不过,我想使用的UITextFieldDelegate方法对所有的事件处理上的文本字段和黑客如用按钮替换文本字段不允许这种做法.

我怎样才能简单地将光标隐藏在UITextField

cocoa-touch uipickerview uitextfield ios

122
推荐指数
7
解决办法
6万
查看次数

iPad定制尺寸的模态视图控制器

我有一些特定尺寸的模态视图控制器.我试图避免使用自定义视图(在当前视图上创建全屏黑色半透明覆盖,在该视图上添加模态视图,执行动画等)来呈现它,因为没有适合我的大小的modalPresentationStyle控制器.

现在我正在使用UIModalPresentationPageSheet,但我的视图高度较小,我有一个丑陋的空白

期望的演讲

 _______________
|    _______    |
|   |       |   |
|   |  MyVC |   |
|   |       |   |
|    -------    |
 --------------- 
Run Code Online (Sandbox Code Playgroud)

实际演示

 _______________
|   |       |   |
|   |  MyVC |   |
|   |       |   |
|   |-------|   |
|   | blank |   |
 ---------------    
Run Code Online (Sandbox Code Playgroud)

如果我使用UIModalPresentationFormSheet,则容器的宽度较小.

我想弄清楚怎么做,但我不知道是否可能.呈现比任何presentationStyles更小的模态VC的问题的解决方案是什么?唯一的解决方案是安排"自定义模态视图控制器引擎"?弹出装置不符合我的设计要求:(

uiviewcontroller ipad modalviewcontroller

54
推荐指数
8
解决办法
6万
查看次数

UILabel + AutoLayout =基线对齐错误

对齐两个标签时遇到问题.两个例子来说明问题

示例1(确定)

[leftLabel setText:@"03"];
[rightLabel setText:@"Description3"];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

例2(NOK)

[leftLabel setText:@"03"];
[rightLabel setAttributedText:[[NSAttributedString alloc] initWithString:@"Description3"]];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在这两个示例中,布局约束都是这样

[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-bigMargin-[leftLabel]-bigMargin-[rightLabel]-bigMargin-|"
                                        options:NSLayoutFormatAlignAllBaseline
                                        metrics:metrics
                                          views:views];
Run Code Online (Sandbox Code Playgroud)

问题是正确的标签,当文本是属性标签时,它被绘制在下面一点,如图中所示,并且对齐结果错误.

为什么?我能用这UIlabel两种方法解决这个问题吗?

编辑:

在GitHub上创建了一个项目,并对此进行了测试.这里的问题是即使没有NSAttributdString我也有问题!查看带有数字的标签,与说明和金额没有正确对齐.

在此输入图像描述

我在这里粘贴单元格的代码,但必须在项目中看到整个场景.

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {

        UIView *contentView = [self contentView];

        [contentView setBackgroundColor:[UIColor clearColor]];

        dayLabel_ = [[UILabel alloc] initWithFrame:CGRectZero];
        [dayLabel_ setTranslatesAutoresizingMaskIntoConstraints:NO];
        [contentView addSubview:dayLabel_];

        monthLabel_ = [[UILabel alloc] initWithFrame:CGRectZero];
        [monthLabel_ setTranslatesAutoresizingMaskIntoConstraints:NO];
        [monthLabel_ setFont:[UIFont boldSystemFontOfSize:13.0f]];
        [contentView addSubview:monthLabel_];

        descriptionLabel_ = [[UILabel alloc] initWithFrame:CGRectZero];
        [descriptionLabel_ setTranslatesAutoresizingMaskIntoConstraints:NO];
        [descriptionLabel_ setFont:[UIFont …
Run Code Online (Sandbox Code Playgroud)

nsattributedstring ios autolayout

18
推荐指数
1
解决办法
8567
查看次数

滚动到集合视图中的项目会导致应用崩溃

我想滚动到某个UICollectionView内部的某个项目viewWillAppear

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [collectionView_ scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:selectedIndex_ inSection:0]
                            atScrollPosition:UICollectionViewScrollPositionLeft
                                    animated:NO];
}
Run Code Online (Sandbox Code Playgroud)

在iOS 6上,此代码崩溃了返回的应用程序

*** Assertion failure in -[UICollectionViewData layoutAttributesForItemAtIndexPath:], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionViewData.m:485
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'must return a UICollectionViewLayoutAttributes instance from -layoutAttributesForItemAtIndexPath: for path <NSIndexPath 0x13894e70> 2 indexes [0, 2]'
Run Code Online (Sandbox Code Playgroud)

在iOS7上,它不会崩溃但只是什么都不做.

滚动到正确的项目只能用于viewDidAppear但是我想在正确的项目中显示带有集合的屏幕.我试图滚动它viewDidLayoutSubviews但它也崩溃了.将呼叫包含在内部try-catch可以避免崩溃,但仍然无法正常工作.

这有什么意义?是否无法显示正确的项目?

非常感谢.

编辑1

我打印了这个viewWillAppearviewDidLayoutSubviews(selectedIndex_是2,该集合有10个项目):

UICollectionViewLayoutAttributes *test = [collectionView_ layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForRow:selectedIndex_ inSection:0]];
Run Code Online (Sandbox Code Playgroud)

结果就是这两个地方.

<UICollectionViewLayoutAttributes: 0x11b9ff20> index path: (<NSIndexPath: …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uicollectionview

18
推荐指数
1
解决办法
8072
查看次数

用于改进代码完成的Xcode插件

最近我做了一个小服务(在Github中可用)来返回给定的switch case结构enum.

当我开始键入枚举名称时,下一步是将此行为作为Xcode代码完成选项实现.

代码完成

我想要的是在这个弹出窗口中添加一个新选项,可以生成带有这三个选项的开关盒.

我正在寻找制作Xcode插件的文档,但我找不到多少.我的第一个问题,也是最重要的问题:在我输入符号时,是否有可能获得符号的定义,提取枚举数据并生成片段?

xcode objective-c ios

13
推荐指数
2
解决办法
716
查看次数

使用我的网址方案作为链接从SMS打开应用程序

我在我的应用程序中声明了一个url方案,smstest所以在Safari中我可以在搜索栏中写入smstest:my-test或者smstest://my-test我的应用程序是打开的.

我正在尝试通过短信文本实现相同的功能,以便消息应用程序可以格式化smstest:my-testsmstest://my-test作为链接,用户可以点击它并调用我的应用程序.但是文本没有格式化为链接.

是否可能或从SMS打开应用程序的唯一解决方案是指向带有脚本的Internet页面?

谢谢.

编辑:有趣的是,我已经安装了IMO Messenger,我收到了一个带有代码作为URL方案的短信,并由Messages app作为链接解析.为什么我的应用程序没有发生?我尝试了几条消息,在url之前和之后都有空格,没有任何反应.

url-scheme ios

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

位移和算术运算有什么区别?

int aNumber;

aNumber = aValue / 2;
aNumber = aValue >> 1;

aNumber = aValue * 2;
aNumber = aValue << 1;

aNumber = aValue / 4;
aNumber = aValue >> 2;

aNumber = aValue * 8;
aNumber = aValue << 3;

// etc.
Run Code Online (Sandbox Code Playgroud)

什么是"最佳"的运营方式?何时更好地使用位移?

c c++ bit-manipulation objective-c

10
推荐指数
3
解决办法
2158
查看次数

iAd错误"广告资源不可用"

我正在将iAd添加到我的应用中.现在,在模拟器中,它运行良好但是当我将它加载到设备(v4.1)时,ADBannerViewDelegate调用bannerView:didFailToReceiveAdWithError:error.userInfo上使用此描述

{
    ADInternalErrorCode = 3;
    NSLocalizedFailureReason = "Ad inventory unavailable";
}
Run Code Online (Sandbox Code Playgroud)

我认为我的iAd网络设置是正确的.我是否可以自行添加广告,或者iAd Network会自动发送测试广告,如同在模拟器中一样?

编辑:我认为这是调度广告的iAd网络服务器的延迟问题.我想当网络上有我的应用广告时,它开始工作正常.

iphone ios iad

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

iOS 8自动布局,VFL和保证金等于或大于

我在iOS 8上遇到VFL限制问题,而在6和7上它都没关系.这是约束:

H:|-margin-[_imageView]-(=>margin)-[_label]-margin-|
Run Code Online (Sandbox Code Playgroud)

双方_imageView__label得到他们正确的固有宽度和幅度的增长预期.我想实现

|-[_imageView]-------------------------------[some text]-|

|-[_imageView]---------------------------[a larger text]-|

|-[_imageView]-----------------------[a very large text]-|

|-[_imageView]-[a very very very very very very larg...]-|
Run Code Online (Sandbox Code Playgroud)

它在视觉上是可以的,但它会引发一个破坏的约束异常:

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7b856ee0 H:[UIImageView:0x7b8ef1f0]-(>=12)-[UILabel:0x7b8e7c60'Test']>
Run Code Online (Sandbox Code Playgroud)

打印后没有歧义_autolayoutTrace.

但是,如果约束仅涉及标签,则根本没有问题:

H:|-margin-[_label1]-(=>margin)-[_label2]-margin-|
Run Code Online (Sandbox Code Playgroud)

接下来的步骤可以解决问题:

更改约束删除>=和添加优先级:

H:|-margin-[_imageView]-(margin@750)-[_label]-margin-|
Run Code Online (Sandbox Code Playgroud)

设置的拥抱优先级 _imageView

[_imageView setContentHuggingPriority:UILayoutPriorityDefaultHigh forAxis:UILayoutConstraintAxisHorizontal];
Run Code Online (Sandbox Code Playgroud)

设定压缩阻力 _label

[_label setContentCompressionResistancePriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
Run Code Online (Sandbox Code Playgroud)

有了这些规则,任何平台都没有问题.在iOS 8上所有这些都是必需的吗?这是一个错误还是我做错了?

谢谢.

constraints ios autolayout ios8

10
推荐指数
1
解决办法
2873
查看次数