我拖了一个UITextView和挂钩委托File's Owner.
在textViewDidChange仅使用默认的键盘调用,但没有从我的键盘发生时输入文本.
如何UITextView在将其inputView设置为自定义键盘时启用委托?
这是我的代码
ViewController.m
-(void)viewDidLoad{
self.myKeyboard = [[[NSBundle mainBundle] loadNibNamed:@"MyKeyboard" owner:nil options:nil] objectAtIndex:0];
[self.myKeyboard setTextView:self.textView];
}
#pragma mark TestViewDelegate
- (void)textViewDidChange:(UITextView *)textView{
NSLog(@"TextDidChange: %@",textView.text);
}
Run Code Online (Sandbox Code Playgroud)
MyKeyboard.h
@interface MyKeyboard : UIView
@property (weak,nonatomic) id<UITextInput> textView;
-(void)setTextView:(id<UITextInput>)textView;
@end
Run Code Online (Sandbox Code Playgroud)
MyKeyboard.m
-(void)setTextView:(id<UITextInput>)textView{
_textView = textView;
if ([textView isKindOfClass:[UITextView class]])
[(UITextView *)textView setInputView:self];
else if ([textView isKindOfClass:[UITextField class]])
[(UITextField *)textView setInputView:self];
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试打开我UITextView在应用程序中识别的链接.我正在使用该UITextView delegate方法shouldInteractWithURL来实现这一目标.
我的代码似乎适用于app的app加载; 但是,除了应用程序之外,它仍然在Safari中打开链接.有没有什么办法解决这一问题?
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
println("called")
let webViewController = WebViewController()
webViewController.urlToLoad = URL
if let navigationController = navigationController {
println("navigating")
navigationController.pushViewController(webViewController, animated: true)
return true
}
else {
return false
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这WebViewController只是我制作的一个自定义类,它显示UIWebView整个屏幕.它有一个属性urlToLoad,它将在其中加载的URL UIWebView.
我也分配delegate的UITextView到UIViewController已经在实施这个代理功能.
有谁知道如何让应用程序停止开放野生动物园?
当我们单击文本视图中的数字时,是否有回调来识别用户何时单击弹出窗口中的“呼叫” ?
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool
上面提到的函数将帮助我识别 UITextView 中的链接已被单击,而是否有一个特定的回调来识别是否单击了“调用”或单击了“取消”
我正在查看UIViewController符合UITextViewDelegate协议的代码,并且有一个名为的实例变量someTextView.
someTextView.text = @"some text";
[self textViewDidChange:someTextView];
Run Code Online (Sandbox Code Playgroud)
这样安全吗?那对我来说看起来不是犹太人.是否有必要打电话textViewDidChange:?它不会被自动调用someTextView.text = @"some text"吗?
我想从UItextview中取消键盘.如何以编程方式实现UItextView委托方法.
我想检查一个用户是否在textView中对一个字符进行退格,如果有任何相同的字符连接它以便将它们全部删除...
例如,如果我正在检查的字符是"e",我有文本"easy heeeeeello",并且用户开始按退格键,它将变为:
容易heeeeeello - >容易heeeeeell - >容易heeeeeel - >容易heeeeee - >容易h
代码应该检测到按下退格键.然后它会检测哪些文本将被删除,如果该文本是一个字符(在我们的例子中是"e"),它将检查是否有更多的"e"触及"e"创建一条"e" s并删除所有.
你能帮助我吗?
我刚接触iPhone.我在我的应用程序中添加了一个使用XIB的UITextView,现在点击完成键后,它只是简单地重新键盘.但是,我想通过点击它创建一个新行,意味着它应该转到下一段.请帮我实现我的输出.这是我的代码:
- (void)textViewDidEndEditing:(UITextView *)textView1
{
if (![textView1 hasText]) {
[textView1 addSubview:placeholderLabel];
}
else{
NSLog(@"done button clicked!!");
}
CGRect rect;
if(screenBounds.size.height == 568)//iPhone5
{
rect = CGRectMake(5, 76, 310, 491);
}
else{
if(_kisiOS7){
rect = CGRectMake(5, 76, 310, 404);
}
else{
rect = CGRectMake(0, 44, 320, 436);
}
}
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
txtView.frame = rect;
[UIView commitAnimations];
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (range.length == 0) {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
} …Run Code Online (Sandbox Code Playgroud) 我不知道为什么我在尝试这个时会收到此错误(此问题的标题是错误,如下面的屏幕截图所示)self.tv_salaryNumber.delegate = self.
我的类EarningsVC实际上继承了UITextFieldDelegate协议,所以无法弄清楚为什么会出现这个错误.(你也可以在hte窗口的最右边看到它Quick Help.

如何设置残留在人物UILabel的UITextView?
我已经为UITextField,但同样的代码不起作用..
这是我尝试过的:
func textView(textView: UITextView, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
{
if string == ""
{
if plainTextView.text!.characters.count == 0
{
charCount = 0
countLabel.text = String(format: "%i Characters Left", maxLength - charCount)
return false
}
charCount = (plainTextView.text!.characters.count - 1)
countLabel.text = String(format: "%i Characters Left", maxLength - charCount)
return true
}
else
{
charCount = (plainTextView.text!.characters.count + 1)
countLabel.text = String(format: "%i Characters Left", maxLength - charCount)
if …Run Code Online (Sandbox Code Playgroud) 我想监听 UITextView 中的每个文本更改。设置非常简单。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(
self,
selector: #selector(textViewDidChangeWithNotification(_:)),
name: UITextView.textDidChangeNotification,
object: nil
)
}
@objc private func textViewDidChangeWithNotification(_ notification: Notification) {
print("Text: \(String(describing: inputTextView.text))")
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下它工作正常,但后来我发现了一些 UITextInput 的黑盒魔法。
第 1 步:输入“我”。我们可以在输出中看到“I”。
第二步:重要的一步。双击字段选择所有文本。
第 3 步:从单词建议中选择“如果”。
并且调试器输出中没有“If”。另一方面,如果插入符号位于“I”单词的末尾,并且我们选择“If”,则输出结果是正确的。
有什么方法可以观察所有文本变化吗?
我可以使用以下方式获取文本:
func textViewDidEndEditing(_ textView: UITextView)
Run Code Online (Sandbox Code Playgroud)
但我需要实时观察所有的变化。我总是看到的另一个选择是使用:
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool
Run Code Online (Sandbox Code Playgroud)
但这种方法对于观察变化来说是一个不好的做法。如果你重复输入两个空格,iOS 会将第一个空格替换为点,并且显然不会通知你此方法中的此操作以及许多其他问题。
ios ×8
uitextview ×6
swift ×4
iphone ×3
objective-c ×3
ios5 ×1
nsurl ×1
uikit ×1
uitextinput ×1
xcode ×1