小编Rac*_*eur的帖子

鼠标跟踪守护程序

我需要使用Cocoa编写一些东西来表示原始鼠标移动数据.最理想的情况是,应用程序只是一个可以运行的小守护进程,将数据传递给另一个应用程序可以访问的套接字服务器以获取对事件的访问权限.

任何人都能指出我在方法和工具方面的正确方向吗?我现在还不确定从哪里开始.

mouse cocoa objective-c mouseevent

14
推荐指数
2
解决办法
4568
查看次数

NSAttributedString在字符串末尾更改颜色

这一定是件容易的事,但我无法理解.

我有一个NSMutableAttributedString,例如,"这是一个测试".我想给"测试"蓝色这个词加上颜色,我这样做:

NSMutableAttributedString *coloredText = [[NSMutableAttributedString alloc] initWithString:@"This is a test"];

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(10,4)];
Run Code Online (Sandbox Code Playgroud)

这很好用.但是现在我想将"测试"后输入的任何内容的文本颜色设置为黑色.

如果我做:

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 1)];
Run Code Online (Sandbox Code Playgroud)

我得到一个objectAtIndex:effectiveRange:越界错误.假设因为范围超出了字符串的长度.

如果我做:

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 0)];
Run Code Online (Sandbox Code Playgroud)

错误消失但在"test"之后输入仍然是蓝色.

当它在字符串末尾时,如何在插入点设置当前颜色?

欢呼任何输入.

colors nsattributedstring ios

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

需要SQL大师来进行复杂的查询

我有几个表,我试图获取一些数据,我非常接近,但不能完全达成协议.

我有以下表格:

  • 事件
  • 用户
  • FRIEND
  • USER__FRIEND
  • EVENT__INVITATION

USER和FRIEND通过USER__FRIEND表(包含USER_ID和FRIEND_ID字段)链接

EVENT__INVITATION将EVENT与FRIEND相关联(它有EVENT_ID和INVITEE_ID)

我想把所有事件都放在哪里:

  • 我是EVENT创建者($ myUserID = EVENT.CREATOR_ID)
  • 或者我被邀请参加活动($ myUserID = EVENT__INVITATION.INVITEE_ID)
  • 或者我的一个朋友是EVENT的创建者($ myUserID = USER__FRIEND.USER_ID AND EVENT.CREATOR_ID IN(我的朋友列表))
  • 或者我的一个朋友被邀请参加活动($ myUserID = USER__FRIEND.USER_ID和EVENT__INVITATION.INVITEE_ID IN(我的朋友列表))

其他参数还有一些其他WHERE条件,但我想我可以自己解决这些问题.

现在我唯一能让它工作的方法就是使用UNION,我认为它必须是一个警察,如果我有更好的排骨,我可以绕过它.

所以,问题是,这可以通过一个不使用UNION的廉价查询来完成吗?

这是我到目前为止所做的一切,除了我邀请的FRIENDs的EVENT之外,它完成了所有事情(23是在这种情况下传入的userID):

SELECT e.*
FROM event e
LEFT JOIN event__invitation ei ON ei.event_id = e.id
LEFT JOIN user__friend uf ON uf.friend_id = ei.invitee_id
LEFT JOIN friend f ON f.id = uf.friend_id
WHERE (ei.invitee_id = 23 OR e.creator_id = 23 OR uf.user_id = 23 OR f.user_id = e.creator_id)
AND …
Run Code Online (Sandbox Code Playgroud)

mysql sql join

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

如果有小数部分,CGFloat到NSString只有十进制

不知道如何正确地说出标题...但我想知道的是,如果有一些聪明的格式说明符将采用数字4.5并给我@"4.5",但也取2号并给我@"2" .

使用%.1f说明符给我@"4.5"但也给@"2.0".我试图摆脱".0"位.

这样的野兽是否存在,或者我将不得不对此进行一些数学计算?FWIW,我试图迭代一个从0到5的值的数组,以半步增加,所以0,0.5,1,1.5,...,4.5,5

干杯!

objective-c string-formatting ios

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

具有自动布局的UIScrollView中的动态大小的UITableView

关于自动布局和UIScrollViews有一百万个问题,但我认为这是不同的.

我有一个看起来像这样的结构:

调整大小示例

白色背景是一个UIView,它充当UIScrollView中的容器(获取滚动视图以构建其自己的内容大小的典型设置,以便它根据容器视图正确滚动).

TableView 1和TableView 2需要具有动态的高度.我不希望它们滚动,所以我需要将它们的帧高度设置为等于它们的内容高度.

我有IBOutlets用于每个这些的高度约束,并且可以毫无问题地调整它们.

当我尝试调整容器视图的高度时出现问题.最后,我想不必弄乱它并让该视图根据其内容自动调整大小,但这似乎不起作用(如果我忽略容器视图的高度,我会在IB中收到警告/错误关于约束).

如果我为容器视图的高度约束创建一个插座并设置它,我得到一个断言失败:

*** Assertion failure in -[UIView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2935.137/UIView.m:8803
Run Code Online (Sandbox Code Playgroud)

我在viewDidLayoutSubviews中进行约束调整,如下所示:

- (void)viewDidLayoutSubviews {
    self.orderItemTableViewHeightConstraint.constant = self.orderItemTableView.contentSize.height - [self tableView:self.orderItemTableView heightForHeaderInSection:0];
    self.shippingOptionTableViewHeightConstraint.constant = self.shippingMethodTableView.contentSize.height;
    self.scrollViewContainerViewHeightConstraint.constant = self.cardInfoLabel.$bottom + 60;
}
Run Code Online (Sandbox Code Playgroud)

我认为问题是设置容器视图的高度约束导致一些递归或某事......

问题:

  1. 在这种情况下,有没有办法让容器视图的高度根据其内容流动?
  2. 如果没有,我该如何以编程方式处理?我是在错误的地方改变约束吗?

感谢您的任何意见!

uitableview uiscrollview ios autolayout

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

AVQueuePlayer挫折(缓冲区欠载处理)

我和AVQueuePlayer有一段时间了.很简单,我在一个使用playerItemWithURL构建的AVPlayerItem数组上制作它:并指向网络上服务器上的视频资产.

如果我试图在刺激器中运行这个东西(原文如此),那么它将通过第一个资产播放,开始播放第二个资产然后就死了.有时它甚至没有通过第一个资产.

现在,我知道sim的行为与设备不同,所以我也尝试在设备上使用同样的问题.

当我在项目上记录各种状态更改时,我看到缓冲区用完了,播放器就死了.对于一个正在播放项目队列的构造来说,这对我来说似乎有点傻......当然缓冲区可能会不足,但为什么它会死掉呢?

我做错了什么,或者这是它应该如何表现?

我通过观察loadedTimeRanges属性以及何时将PLAY发送给播放器来解决这个问题.但这会导致口吃回放,这也很糟糕.

这是我的代码.有人可以告诉我如何做到这一点,而不是播放完全废话?

- (void)viewDidLoad {
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePlayerItemReachedEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.queuePlayer];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePlayerStalled:) name:AVPlayerItemPlaybackStalledNotification object:self.queuePlayer];

    NSString *baseURL = @"http://www.aDomain.com/assets/";
    NSMutableArray *vidItemArray = [[NSMutableArray alloc] initWithCapacity:5];

    for (int i = 1; i <= 5; i++) {
        AVPlayerItem *vid = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:[baseURL stringByAppendingFormat:@"%d.mov", i]]];
        [vid addObserver:self forKeyPath:@"status" options:0 context:nil];
        [vid addObserver:self forKeyPath:@"playbackBufferEmpty" options:0 context:nil];
        [vid addObserver:self forKeyPath:@"loadedTimeRanges" options:0 context:nil];
        [vidItemArray addObject:vid];
    }

    self.queuePlayer = [AVQueuePlayer queuePlayerWithItems:vidItemArray];
    [self.mPlaybackView setPlayer:self.queuePlayer];
}

- (void)handlePlayerItemReachedEnd:(NSNotification *)notification …
Run Code Online (Sandbox Code Playgroud)

buffer avplayer avqueueplayer ios6

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

NSString与emoticons/emojis url编码

我试图获取可能包含特殊字符和表情符号的UITextField的内容,并将其转换为我可以在GET请求中传递给PHP服务的内容.

如果我根本不对字符串进行编码,那么emojis就会很好地显示(我可以在数据库中看到它们并且它们会正确地回复给我)...但是如果我添加了特殊的字符(〜!@#$%等等) .)GET请求扼流圈.

所以我通过url编码器运行字符串:

[commentText stringByAddingPercentEscapesUsingEncoding:NSNonLossyASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)

我正在使用NSNonLossyASCIIStringEncoding来正确地运行emojis,这有效,但使用它来编码会返回一个nil字符串.事实上,唯一没有返回nil的编码是UTF8,但是这会使用百分比转义来扩展表情符号unicode.

我该怎么做呢?我是否必须为此案例编写自己的字符串替换,或者是否有iOS方法可以实现,我没有看到?

干杯,

克里斯

encoding objective-c urlencode nsstring ios

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