小编spy*_*art的帖子

UITableViewCell选择器setSelected:animated:被多次调用?

我用自定义的UITableViewCell类中的setSelected:animated:发现了一个奇怪的行为.我发现如果单击表格中的单元格,会多次调用此函数.我想知道这是正常行为还是我的代码中的错误.

为了帮助调试,我在我的自定义UITableViewCell类实现中修改了setSelected:animated: function,如下所示:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

[super setSelected:selected animated:animated];

// Configure the view for the selected state.
if (selected)
    NSLog(@"Yes %X", &self);
else
    NSLog(@"No %X", &self);

}
Run Code Online (Sandbox Code Playgroud)

如果我点击模拟器中的单元格,这是我在控制台中得到的:

2011-03-22 22:05:26.963 marketPulse[3294:207] Yes BFFFDDD0
2011-03-22 22:05:26.964 marketPulse[3294:207] Yes BFFFDE30
Run Code Online (Sandbox Code Playgroud)

你会认为我只会获得1个条目,因为我只点击了1个单元格.

如果我在那之后点击另一个单元格:

2011-03-22 22:07:11.014 marketPulse[3294:207] No BFFFD890
2011-03-22 22:07:11.016 marketPulse[3294:207] No BFFFDD00
2011-03-22 22:07:11.017 marketPulse[3294:207] Yes BFFFDDD0
2011-03-22 22:07:11.017 marketPulse[3294:207] Yes BFFFDE30
Run Code Online (Sandbox Code Playgroud)

如果我连续两次点击同一个单元格,我会得到2个以上:

2011-03-22 22:08:41.067 marketPulse[3294:207] Yes BFFFDDD0
2011-03-22 22:08:41.068 marketPulse[3294:207] Yes BFFFDE30
2011-03-22 22:08:41.069 marketPulse[3294:207] …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview ios

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

EAGLView到UIImage颜色转换问题

我有一个EAGLView(取自Apple的例子),我可以使用以下代码成功转换为UIImage:

- (UIImage *)glToUIImage:(CGSize)size {

NSInteger backingWidth = size.width;
NSInteger backingHeight = size.height;

NSInteger myDataLength = backingWidth * backingHeight * 4;

// allocate array and read pixels into it.
GLuint *buffer = (GLuint *) malloc(myDataLength);
glReadPixels(0, 0, backingWidth, backingHeight, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

// gl renders “upside down” so swap top to bottom into new array.
for(int y = 0; y < backingHeight / 2; y++) {
    for(int x = 0; x < backingWidth; x++) {
        //Swap top and bottom bytes …
Run Code Online (Sandbox Code Playgroud)

iphone opengl-es eaglview uiview ios

12
推荐指数
1
解决办法
815
查看次数

需要在iOS 7上使用NON-translucent条形的wantFullScreenLayout行为

我希望能够让我的视图覆盖整个屏幕(在导航栏和工具栏后面),导航栏和工具栏的半透明属性设置为NO(我想要非透明栏).

通过设置wantsFullScreenLayout为YES,在iOS 7之前很容易实现.但是,在iOS 7中,我无法找到任何方法.有任何想法吗?

uinavigationbar uitoolbar ios ios7 xcode5

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

当标题很长时,backBarButtonItem会在iOS 7中重命名

我在iOS的7观察到的一个现象是,的标题backBarButtonItemUINavigationItem获取的,如果当前显示的视图控制器的标题太长改名.太懒了解释所以这里有一些照片:

带有短标题和所需后退按钮的屏幕截图

长标题将后退按钮重命名为

如您所见,当标题太长时,后退按钮会重命名为"Back",无论之前是什么.如果标题更长,则后退按钮不显示任何文本,只显示左箭头图像.

有谁知道如何禁用此行为?我希望后退按钮保持我想要的状态而不是重命名.谢谢

编辑

我通过手动约束视图控制器标题的宽度来创建一个脏解决方案.我发现iPhone上的标题字体是System Bold 17.0,所以我在设置之前检查标题的大小(通过sizeWithAttributes:字符串的方法),并在标题的末尾修剪字符,直到size小于导致后退按钮重命名的长度.

uiviewcontroller uinavigationcontroller uinavigationitem backbarbuttonitem ios7

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

设置包不能在watchOS 2上运行

这在watchOS 1上不是问题,但现在在watchOS 2上我无法读取手表扩展上的值.

根据Apple文档,这是可能的.根据这个帖子的一些人的说法,这是可能的.根据这个线程上的Apple员工的说法,这是可能的.

据我所知,我正确地设置了所有内容:

  • 我在iOS应用上启用了App Groups,并使用相同的标识符来观看扩展.
  • 我将Settings-Watch.bundle添加到iOS应用程序中,并ApplicationGroupContainerIdentifier为plist 添加了相同的标识符

当我NSUserDefaults使用标识符作为套件名称初始化对象时,我无法读取监视扩展名上的值.我可以在iOS应用程序上阅读它们.这发生在模拟器和真实设备中.

请不要发布有关如何使用Watch Connectivity执行此操作的答案.只有在没有Watch Connectivity的watchOS 2上的共享应用程序组才能实现这一点,人们可以做到这一点,而这里直接来自文档:

在watchOS 2中,您的WatchKit扩展可能会读取首选项的值,但您无法编写新值.watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS.

nsuserdefaults ios ios-app-group watchkit

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

调整GLKView的大小

GLKView调整大小,有担当的是,缓冲区和上下文的地方一些幕后的操作GLKView.在执行这些幕后操作所花费的时间内,绘制到GLKView不会产生正确的结果.

在我的场景中,我GLKView已经setNeedsDisplay启用了一个,因此无论何时我需要在屏幕上更新它的内容,我只需要调用-setNeedsDisplayGLKView.我正在使用GLKView绘制图像,所以如果我需要绘制不同大小的图像,我还需要更改图像的大小GLKView.

问题:当我更改GLKView并调用setNeedsDisplay该视图的大小时,屏幕上的结果不正确.这是因为在GLKView尝试绘制新图像之前,没有完成新尺寸更改所调用的幕后操作.

我通过调用找到了解决方法:performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0而不仅仅是setNeedsDisplayGLKView.这基本上迫使主线程在调用之前等待所有幕后的openGL操作完成setNeedsDisplay.虽然这项工作正常,但我想知道是否有更好的解决方案.例如,是否存在openGL调用以使线程等待所有openGL操作在继续之前完成?

opengl-es ios opengl-es-2.0 ios5 glkit

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

PHP脚本在蜂窝连接的输出结尾处有额外的0

我有一个非常简单的PHP脚本如下:

<?php

    echo "$$";

?>
Run Code Online (Sandbox Code Playgroud)

在wifi或有线连接上,输出正常,如下所示:

$$
Run Code Online (Sandbox Code Playgroud)

但在我的蜂窝连接(AT&T上的LTE)上,输出是:

$$0
Run Code Online (Sandbox Code Playgroud)

怎么了输出零?

这个问题似乎只发生在AT&T网络上,我试过Verizon网络并且它正在运行.

php echo cellular-network

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