iOS8委托方法中的nil对象-自定义键盘
我正在制作一个自定义键盘 我正在我的iOS8委托方法中的nil对象-自定义键盘,ios,ios8,delegates,ios-app-extension,Ios,Ios8,Delegates,Ios App Extension,我正在制作一个自定义键盘 我正在我的InputViewController中实现以下委托方法 但是我总是得到\u textInput=nil\u - (void)textWillChange:(id<UITextInput>)textInput - (void)textDidChange:(id<UITextInput>)textInput - (void) selectionWillChange:(id<UITextInput>)textInput - (v
InputViewController
中实现以下委托方法但是我总是得到
\u textInput=nil\u
- (void)textWillChange:(id<UITextInput>)textInput
- (void)textDidChange:(id<UITextInput>)textInput
- (void) selectionWillChange:(id<UITextInput>)textInput
- (void) selectionDidChange:(id<UITextInput>)textInput
-(void)textWillChange:(id)textInput
-(无效)textDidChange:(id)textInput
-(无效)选择将更改:(id)文本输入
-(无效)selectionDidChange:(id)文本输入
有人知道怎么修吗?这是不是有原因的
nil
我需要自己实现什么吗?好问题。但看来,
uitPutDelegate
并不是您实现的协议
来自苹果文档,标题为:
由于外部原因在文本视图中发生更改时,
它们不是由文本输入系统调用uiteOutput
对象应发送textWillChange:
,textDidChange:
,
selectionWillChange:
,以及selectionDidChange:
输入消息
委托(它持有对其的引用)。例如,当用户点击
文本视图,您可以设置选定文本的范围以放置
插入手指下方的点,您将发送selectionWillChange:
更改所选范围之前,请发送selectionDidChange:
在你改变范围之后
来自现场代表:
UIKit提供一个私有文本输入委托,它在
类采用的对象的inputDelegate属性的运行时
UIPUT协议
这意味着我们不实施这些委托方法;我们使用它们通知inputDelegate
您已通过键盘输入以外的方式更改了文本或选择
以下是一个说明这一点的方法:
- (void)delete:(id)sender;
{
if (selection && ![selection isEmpty]) {
[inputDelegate textWillChange:self];
[inputDelegate selectionWillChange:self];
[self replaceRange:selection withText:@""];
[inputDelegate selectionDidChange:self];
[inputDelegate textDidChange:self];
}
}
包含更多示例的示例代码。苹果的API只提到“textInput类采用UIT输出协议的文档实例”。这并没有什么帮助。苹果公司有这方面的示例代码吗?这方面的迷雾太多了。现在在beta 6中,对
textInput
的任何调用都会导致键盘崩溃。@bauerMusic您正在调用self.textDocumentProxy吗?您指的是哪个文本输入?传递给textDidChange:
delegate的实例。考虑到你原来的帖子,我也在等待关于这个id
实例是什么的一些答案。仅限Apple注意:其类采用UIT输出协议的文档实例。。然而,它是零,现在调用它或试图打印它,甚至访问它,导致键盘崩溃。@bauerMusic我猜它崩溃是因为它是零,不是吗?