小编Fab*_*eri的帖子

UITableViewCell与UITextField失去了选择UITableView行的能力?

我差不多完成了UITableViewCell一个UITextField用它来实现.而不是经历CGRectMake,UITableViewCell.contentView我已经以更简单的方式实现它:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell"];
    [cell setSelectionStyle:UITableViewCellSelectionStyleBlue];
    amountField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 190, 30)];
    amountField.placeholder = @"Enter amount";
    amountField.keyboardType = UIKeyboardTypeDecimalPad;
    amountField.textAlignment = UITextAlignmentRight;
    amountField.clearButtonMode = UITextFieldViewModeNever; 
    [amountField setDelegate:self];

    [[cell textLabel] setText:@"Amount"];
    [cell addSubview:amountField];
    return cell;
}
Run Code Online (Sandbox Code Playgroud)

然后我还实现了该didSelectRow方法,重新设置textField以允许显示其他字段的输入视图.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    [amountField resignFirstResponder];
    ...
}
Run Code Online (Sandbox Code Playgroud)

这很顺利,只有表中还有其他行,当选择其他行时,整个单元格被选中并变成蓝色,而我的UITextField没有,我的意思是选择了字段,我可以输入文字但是没有选择单元格.我测试了它并发现问题在于:

[cell addSubview:amountField];
Run Code Online (Sandbox Code Playgroud)

这似乎打破了可选择的单元格行为,甚至添加它[cell contentView]都不能解决这个问题.我错过了什么?

iphone cocoa-touch objective-c uitableview ios

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

是否可以为类别声明第二个@interface?

我试图@interface在.m文件中声明一个类别的私有.

对于正常的课程,我会这样做:

@interface ClassA ()

@end

@implementation ClassA

@end
Run Code Online (Sandbox Code Playgroud)

它会很顺利.

对于我尝试过类别的课程:

@interface ClassA (CategoryA) ()

@end

@implementation ClassA (CategoryA)

@end
Run Code Online (Sandbox Code Playgroud)

但它给出了各种不同的错误.我试图"扩展"一个类别,通过这种语法扩展类的方式@interface ClassA ().

我希望为该类别提供私有方法,并且我想知道,如果在暴露的接口中,我可以@interface在.m文件中放置第二个类别,它不会在类本身之外公开实例变量和方法.

像这样的东西:

ClassA的+ categoryA.h

@interface ClassA (CategoryA)

<some public methods>

@end
Run Code Online (Sandbox Code Playgroud)

ClassA + categoryA.m文件

@interface ClassA (CategoryA)

<some private methods>

@end


@implementation ClassA (CategoryA)

<here I want to be able to call the private methods above>

@end
Run Code Online (Sandbox Code Playgroud)

现在这是在Xcode中给我一个警告:

接口'ClassA'上类别'CategoryA'的重复定义

有没有办法得到这种行为?

class objective-c categories

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

iPhone X - Safe Area无法实现全屏体验?

这里提供了适用于iPhone X的新HIG ,它指定:"提供全屏体验.确保背景延伸到显示器的边缘,并且垂直可滚动的布局(如表格和集合)一直延伸到底部."

现在我想了解如何使用Xcode 9 GM实现这一点,因为在我看来,允许扩展到整个屏幕的唯一视图是UIViewController根视图,并且每当我尝试为上面的视图拖动约束时即,WKWebView到根视图,约束实际上连接到安全区域,使得顶部和底部区域都为空,如故事板中所示:

在此输入图像描述

请注意这里的答案指定使用安全区域,但这不起作用,因为使用它导致以下模拟器结果,其中WKWebView没有扩展到屏幕的边缘:

在此输入图像描述

xcode ios ios11 xcode9 iphone-x

6
推荐指数
2
解决办法
7409
查看次数

将NSAttributedString与不同大小的字符垂直对齐

我一直在谷歌上搜索一段时间,我仍然对iOS6感到惊讶,没有办法垂直对齐NSAttributedString不同大小的字符?特别是我试图将它作为UIButton标题属性垂直对齐,这是可行的吗?

nsattributedstring ios

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

SpeechKit缺少语音结束功能?

我使用新的SpeechKit框架实现了语音识别.
但是,我找不到任何关于如何实现自动语音结束检测的指示.

有人知道这在某种程度上是否可行?

func startRecording() {

        // check if recognition task is running
        if recognitionTask != nil {
            recognitionTask?.cancel()
            recognitionTask = nil
        }

        // create an audio session for the audio recording
        let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setCategory(AVAudioSessionCategoryRecord) // recording
            try audioSession.setMode(AVAudioSessionModeMeasurement) // measurement
            try audioSession.setActive(true, with: .notifyOthersOnDeactivation)
        } catch {
            print("audioSession properties weren't set because of an error")
        }

        // this will be sent to the Apple's servers
        recognitionRequest = SFSpeechAudioBufferRecognitionRequest()

        // check if the device has …
Run Code Online (Sandbox Code Playgroud)

speech-recognition swift ios10

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

当我尝试使用 Promise&lt;String&gt; 函数时,PromiseKit 6.13.1 无法符合“Thenable”

我发现在一个看似简单的情况下使用 PromiseKit 6.13.1 非常困难。我有以下两个返回 a 的函数,Promise<String>但我似乎无法找到一种使用 ```firstly{}.then{} 语法来使用它们的方法:

 func promiseGetJWTToken() -> Promise<String> {
    return Promise<String> { seal in
        let error: Error = NSError(domain: "", code: 2000)
        getJWTToken { tokenJWT in
            guard let tokenJWT = tokenJWT else {
                seal.resolve(.rejected(error))
                return
            }
            seal.resolve(.fulfilled(tokenJWT))
        }
    }
}

func promiseGetBEToken() -> Promise<String> {
    return Promise<String> { seal in
        let error: Error = NSError(domain: "", code: 2000)
        getBEToken { result in
            switch result {
            case .success(let response):
                guard let tokenBE = response.token else …
Run Code Online (Sandbox Code Playgroud)

promise ios swift promisekit thenable

5
推荐指数
2
解决办法
1663
查看次数

更改UIViewController self.view框架

我正在尝试显示一个viewController xib视图,其视图显示在固定标题横幅(0,0,320,44)下,这是在应用程序窗口中添加的imageView.

这是因为我需要它在我导航多个视图控制器时粘在屏幕上.这是我正在做的项目的要求.

到目前为止,我尝试过:

  • 使用点表示法和setter将XIB视图调整为适当的帧大小(0,0,320,416).

  • 使用self.view.frame更改viewDidLoad中的帧= CGRectMake(0,44,320,416);

但它不起作用.有什么建议吗?

objective-c uiviewcontroller uiview ios

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

另一个"保留,然后释放"的问题

作为Cocoa/Obj-C的新手,我正在通过Aaron Hillegass的"Cocoa Programming for Mac OS X"一书,而且 - 现在我们还有机会使用GC来避免所有这些推理 - 我不是我确定我得到了一些保留的理由.

特别是在其中一个例子中,Aaron提供了良好的编程实践:

- (void) setFoo:(NSCalendarDate *)x
{
    [x retain];
    [foo release];
    foo = x;
}
Run Code Online (Sandbox Code Playgroud)

我没有理由在方法的第一行保留x实例:

[x retain];
Run Code Online (Sandbox Code Playgroud)

这个实例的范围只是set方法,对吧?退出方法范围时,x实例应该被解除分配吗?此外,在将x分配给foo时:

foo = x;
Run Code Online (Sandbox Code Playgroud)

无论如何foo将指向x内存单元格,因此会增加指向对象的保留计数,不是吗?这应该确保不会释放内存.

那么,有什么意义呢?当然,我确信我遗失了一些东西,但不知道到底是什么.

谢谢,Fabrizio

cocoa memory-management objective-c retaincount

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

在swift中循环一系列NSDictionaries

好的,试图抓住最后一班火车来学习斯威夫特,我看到了类似的问题,但我没有让他们解决我的问题.

我有一个NSDictionary被调用的entries,其中一个值对应于key "TYPES"是一个NSArrayNSDictionaries.我试图循环后者NSDictionary并检索键的整数值"TID",我正在做:

for dict in entries["TYPES"] as NSDictionary {
   let tid : Int = typeDict["TID"]
}
Run Code Online (Sandbox Code Playgroud)

但我收到的错误是:(key: AnyObject, value: AnyObject)没有名为'下标'的成员

我知道这是由于entries["TYPES"]存在anyObject!并来自Xcode 6 beta 6,其中大量的Foundation API已经过审计,可选的一致性,因此需要解包但我尽力解开没有成功,编译器总是抱怨不同事情.有人知道怎么做吗?

for-loop nsdictionary ios swift

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