小编jch*_*nxu的帖子

如何在保持单元格选择的同时向UICollectionView添加点击手势?

任务

添加单击手势UICollectionView,不要妨碍单元格选择.

我想在collectionView的无单元格部分进行一些其他的点击.

使用XCode8,Swift 3.

override func viewDidLoad() {
    ...
    collectionView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(tap)))
}

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print(indexPath)
}

func tap(sender: UITapGestureRecognizer){
    print("tapped")
}
Run Code Online (Sandbox Code Playgroud)

结果

是的,它现在阻碍了它.当您点击单元格时,它会记录"轻拍".

分析

  • 我检查了collectionView和单元格的hitTest返回值.两者都返回了tapped单元格,这意味着它们形成了Cell - > CollectionView的响应链
  • 细胞上没有手势
  • 关于collectionView的3个手势,似乎没有人使用单元格选择
    • UIScrollViewDelayedTouchesBeganGestureRecognizer
    • UIScrollViewPanGestureRecognizer
    • UITapGestureRecognizer
  • callStack,似乎单元格选择具有不同的堆栈跟踪与手势的目标 - 动作模式.
  • 双击手势与单元格选择一起使用.

找不到更多的痕迹.有关如何实施细胞选择或实现此任务的任何想法?

uiresponder uigesturerecognizer ios uicollectionview swift

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

在折叠显示中以编程方式关闭详细视图控制器?

在UISplitViewController折叠显示中,如何以编程方式返回主视图控制器?

详情

我用谷歌搜索但没有找到解决办法.不确定我是否使用了正确的关键字.这是我显示详细视图控制器的方式:

[self showDetailViewController:[[UINavigationController alloc] initWithRootViewController:detail] sender:self];
Run Code Online (Sandbox Code Playgroud)

我也分别尝试了这3种方法,但没有一种方法有效:

if (self.splitViewController.collapsed) {
        UIBarButtonItem *backButtonItem = self.navigationItem.leftBarButtonItem;
        (1):[backButtonItem.target performSelector:backButtonItem.action];
        (2):[[UIApplication sharedApplication] sendAction:backButtonItem.action to:backButtonItem.target from:nil forEvent:nil];
        (3):objc_msgSend(backButtonItem.target, backButtonItem.action);
}
Run Code Online (Sandbox Code Playgroud)

导航项目设置如同详细信息VC viewDidLoad:

self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
self.navigationItem.leftItemsSupplementBackButton = YES;
Run Code Online (Sandbox Code Playgroud)

uisplitviewcontroller ios

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

这个webpack警告是否可以安全忽略?

我在webpack中发现了一个奇怪的警告.在解析时process.env使用babel-loader.TypeError: result.setExpression is not a function发生警告()webpack/lib/Parser.js.我正在进行一个大项目,希望我的核心能够超级坚固.那么忽略这个警告是否安全,因为webpack明确地捕获它并且注释'忽略错误'?

警告(TypeError: result.setExpression is not a function)发生在这里(webpack/lib/Parser.js https://github.com/webpack/webpack/blob/2361995a429794d372d61e3fb628dea3929e0ca4/lib/Parser.js#L1987)

evaluateExpression(expression) {
    try {
        const hook = this.hooks.evaluate.get(expression.type);
        if (hook !== undefined) {
            const result = hook.call(expression);
            if (result !== undefined) {
                if (result) {
                    result.setExpression(expression);
                }
                return result;
            }
        }
    } catch (e) {
        console.warn(e);
        // ignore error
    }
    return new BasicEvaluatedExpression()
        .setRange(expression.range)
        .setExpression(expression);
}
Run Code Online (Sandbox Code Playgroud)

我打印了这个result,发现它

BasicEvaluatedExpression {
  type: 0,
  range: [ 945, …
Run Code Online (Sandbox Code Playgroud)

babel webpack babel-loader

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

如何使用故事板添加自定义数据源类

我找不到在故事板中添加我的自定义数据源类UICollectionView的方法.数据源类有一个这样的接口:

@interface CalendarDataSource : NSObject<UICollectionViewDataSource>
Run Code Online (Sandbox Code Playgroud)

我试图在场景边栏中找到日历数据源,但我不能.所以我似乎无法将类链接到我的UICollectionView.有什么我应该做但我没有吗?


如果你想重现类似的问题,只需在XCode5中创建一个新项目,设置一个UICollectionViewController,并像上面一样创建一个新类.

我目前正在重写http://www.objc.io/issue-3/中描述的项目 .Github repo是https://github.com/objcio/issue-3-collection-view-layouts这个项目设法然而,这样做.我的代码与项目几乎相同但无法运行,因为viewcontroller.collectionView.dataSource未初始化.

以编程方式进行初始化是另一个问题,但请在评论中告诉我,因为我从互联网上获得的只是将dataSource设置为self.但是将它设置为self并不需要引入一个新的保留数据源对象,我被卡住了.

xcode objective-c storyboard ios

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

字体大小10像素无法应用,始终为12像素

简单的代码,但在chrome中,font-size始终为12px,在IE中为10px。对于大于12的px,可以更改。但是对于小于12的px,无法更改...。如何解决此问题?

<html>
<head>
    <style type="text/css" >
    body{
        font-size: 10px;
    }
    div{
        margin: 0 auto;
        border: 1px solid #000;
        width: 60em;
    }
    </style>
</head>
<body>
    <div>
        wrapper
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

css internet-explorer google-chrome pixel em

3
推荐指数
1
解决办法
3151
查看次数

ber和&ch_array [0]和ch_array有什么区别?

当我定义:

char ch_array[50];
Run Code Online (Sandbox Code Playgroud)
  1. &ch_array[0]和之间有什么区别ch_array

  2. 如果我这样定义怎么办?

    char *ch_array = (char *) malloc(sizeof(char)*50);
    
    Run Code Online (Sandbox Code Playgroud)

    这个问题实际上来自于我使用(&ch_array + 128)vs. &ch_array[128]时间bcopy(&ch_array + 128, buf, 128);.

  3. 我这里有一个segementation故障,但没有使用故障bcopy(&ch_array[128], buf, 128);,为什么?它与存储数组的位置有什么关系吗?

c arrays char

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