标签: uitextviewdelegate

确认UITextview自动完成

这似乎不可能,但也许其他人也有同样的问题.

我是否可以通过编程方式接受自动填充,或以某种方式获取弹出的建议单词?我的问题是我正在捕获返回/退格键击,然后将焦点移动到另一个textview.当输入/退格时,textview将忽略自动建议的单词.似乎只能通过命中空格/点(并返回新行)来接受自动完成.使用此代码:

 - (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
                                replacementText:(NSString *)text {
    NSRange textViewRange = [textView selectedRange];

    // Handle newrow and backspace.  
    if(([text length] == 0) && (textViewRange.location== 0) && textViewRange.length==0){
        // BACKSPACE KEYSTROKE
        [delegate doSomethingWhenBackspace];
        return NO;      
    }else if ([text isEqualToString:@"\n"]){    
        // RETURN KEYSTROKE
        [delegate doSomethingWhenReturn];       
        return NO;      
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我尝试以编程方式在返回键时添加"space",但也忽略了自动完成的单词.

else if ([text isEqualToString:@"\n"]){ 
                // Tryin to accept autocomplete with no result. 
                textview.text = [textview.text stringByAppendingString:@" "];
            // RETURN KEYSTROKE
            [delegate doSomethingWhenReturn];       
            return NO;      
        }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

iphone uitextview uitextviewdelegate ios

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

在UITextView上更改文本时是否有委托调用?

当我以UITextView编程方式设置我这样:

[self.textView setText:@""];

委托方法textViewDidChange:不会被调用.有没有一种方法可以在创建UITextView子类的情况下找到它?

cocoa-touch uitextview uitextviewdelegate ios

8
推荐指数
2
解决办法
6060
查看次数

动态UITextView错位行为

我试图有一个类似于iPhone消息的textview,其中textview最初有一个约束(height <= 100)和scrollEnabled = false

这是项目的链接:https: //github.com/akawther/TextView

文本视图的高度根据内容大小增加,如左图所示,直到达到100的高度,然后scrollEnabled设置为true.它完美无缺,直到我点击右下角的"发送"按钮,其中textView应该变为空并返回到原始高度并且scrollEnabled变为false.中间的图像显示了单击按钮时发生的情况.当我开始输入时,文本视图向下移动,就像您在右侧的最后一张图片中看到的那样.我希望能够单击按钮并消除中间图像上显示的行为,我该如何解决这个问题?

在此输入图像描述

import UIKit

class ViewController: UIViewController, UITextViewDelegate {

@IBOutlet weak var bottomConstraint: NSLayoutConstraint!
@IBOutlet weak var messageTextView: UITextView!
@IBOutlet weak var parent: UIView!
let messageTextViewMaxHeight: CGFloat = 100


override func viewDidLoad() {
    super.viewDidLoad()

    self.messageTextView.delegate = self
}

@IBAction func Reset(sender: AnyObject) {
    messageTextView.text = ""
    messageTextView.frame.size.height = messageTextView.contentSize.height
    messageTextView.scrollEnabled = false
    self.parent.layoutIfNeeded()
}

func textViewDidChange(textView: UITextView) {
    if textView.frame.size.height >= self.messageTextViewMaxHeight {

        textView.scrollEnabled = true

    } else {
        textView.scrollEnabled = false …
Run Code Online (Sandbox Code Playgroud)

chat uitextviewdelegate ios swift

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

如何在程序化UITextView编辑上触发textViewdelegate

如果我使用键盘键入,则textViewDidChangeshouldChangeTextInRange总是被调用。但是,当我以编程方式更改textView时,不会调用委托方法。如何在textView中进行编程更改以触发委托方法?

更新资料

还有其他方法可以以编程方式模拟键盘输入吗?

uitextview uitextviewdelegate ios

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

UITextView不会成为第一响应者

我有一个UIView包含一个UITextView.该UIView是内部的启动UIViewController.

但当我触摸UITextView盒子时,没有任何反应.键盘既不出现也没有委托方法响应交互.

码:

    noteText = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, 700, 240)];
    noteText.layer.borderColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.2].CGColor;
    noteText.layer.borderWidth = 2;
    [noteText setEditable:YES];
    noteText.userInteractionEnabled = YES;
    noteText.returnKeyType = UIReturnKeyDone;
    noteText.font = [UIFont fontWithName:@"Calibri" size:16];
    noteText.textColor = [UIColor blackColor];
    [self addSubview:noteText];
Run Code Online (Sandbox Code Playgroud)

更新1

我从UIViewController中删除了所有其他视图,并且只在UIViewController中放置了一个UITextView,但仍未做出反应.光标或键盘都不会出现.

objective-c uitextview uitextviewdelegate ios

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

未调用textViewDidEndEditing

我是iOS开发的新手.

我已经像这样编写了头文件

@interface TextView : UITextView <UITextViewDelegate, UIPopoverControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

TextView.h中.

实现文件代码如下:

- (BOOL)textViewShouldBeginEditing:(TextView *)textView
{
    ZWLog(@"called should begin edit");
    return YES;
}

- (void)textViewDidBeginEditing:(TextView *)textView
{
    ZWLog(@"called did begin edit");
}

- (BOOL)textViewShouldEndEditing:(TextView *)textView
{
    ZWLog(@"called should end editing");
    return YES;
}

- (void)textViewDidEndEditing:(TextView *)textView
{
    ZWLog(@"view did end edit");
    return YES;
}

- (BOOL)textView:(TextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    //my own code
    return YES;
}

- (void)textViewDidChange:(TextView *)textView
{
   //my own code
}
Run Code Online (Sandbox Code Playgroud)

当我开始输入一个角色时UITextView,我得到了回复

  • textViewShouldBeginEditing.
  • textViewDidBeginEditing …

iphone uitextview uitextviewdelegate ios

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

textViewDidChange:在iOS 7中崩溃

我们知道它UITextView在iOS 7中更强大,但在这里它表现得更加脆弱.在iOS 6中使用中文输入键盘输入"rr"时,以下代码可正常工作,但在iOS 7中崩溃.

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.tv = [[UITextView alloc] initWithFrame:CGRectMake(0, 100, 320, 100)];
    self.tv.backgroundColor = [UIColor yellowColor];
    self.tv.textColor = [UIColor blackColor];
    self.tv.editable = YES;
    self.tv.delegate = self;

    [self.view addSubview:self.tv];
}

-(void)textViewDidChange:(UITextView *)textView{

    int maxLength = 2;
    if (self.tv.text.length > maxLength) {
        NSLog(@"self.tv.text :%@",self.tv.text);
        NSLog(@"self.tv.text.length :%d",self.tv.text.length);
        NSLog(@"maxLength :%d",maxLength);
        self.tv.text = [self.tv.text substringToIndex:maxLength];
    }
}
Run Code Online (Sandbox Code Playgroud)

日志如下:

2013-11-13 15:48:16.003 Test2[1388:70b] self.tv.text :r?r
2013-11-13 15:48:16.004 Test2[1388:70b] self.tv.text.length :3
2013-11-13 15:48:16.005 Test2[1388:70b] maxLength :2
2013-11-13 15:48:16.032 Test2[1388:70b] *** Terminating …
Run Code Online (Sandbox Code Playgroud)

objective-c uitextview uitextviewdelegate ios7

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

处理iOS键盘上的标记文本

根据文件,

标记文本是多级文本输入的一部分,表示用户尚未确认的临时插入文本.它以独特的方式设计.标记文本的范围始终包含一系列选定文本,可能是一系列字符或插入符号.

管理键盘一章中,图5-2显示了标记文本的内容:

在此输入图像描述

给定第4和第6张图像,键盘上的顶栏显示标记文本,如"修","修改","修身"等.

我很困惑的是HOWTO:

  • 检测用户点击标记的文本.它是替换所选文本,或者只是插入标记文本.
  • 在栏上显示自定义文字.例如,[textView showMarkedText:@"hello" atIndex:0].

谢谢.

objective-c uitextview uitextviewdelegate ios uitextinput

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

在UITextView委托方法textViewDidChange中设置setAttributedText时如何停止光标更改位置

下面的代码将textView的字符串中的"test"更改为红色,但是当调用textViewDidChange时,它还具有将光标移动到文本块末尾的效果(Aka在进行任何文本编辑时非常烦人).

当我在textViewDidChange中设置setAttributedText时,如何防止光标移动?

- (void)textViewDidChange:(UITextView *)textView {

    NSString* currentString = self.textView.text;
    NSMutableAttributedString* string = [[NSMutableAttributedString alloc]initWithString:currentString];
    NSArray *words=[currentString componentsSeparatedByString:@" "];

    for (NSString *word in words) {
        if ([word isEqualToString:@"test"]) {
            // change color
            NSRange range=[currentString rangeOfString:word];
            [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:range];
        }
    }

    // assign new color to textView's text
    [self.textView setAttributedText:string];
}
Run Code Online (Sandbox Code Playgroud)

objective-c uitextview uitextviewdelegate ios

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

iOS15 UITextView 拖动视图后导致崩溃,Invalid参数不满足:pos

崩溃示例

上面的文章是论坛上一位网友发现的问题。最近,我也在firebase上发现了类似的崩溃堆栈。我猜也是这个原因造成的,可能是数据越界的问题。你有好的解决办法吗?

Firebase 使堆栈崩溃:

Fatal Exception: NSInternalInconsistencyException
Invalid parameter not satisfying: pos
0
CoreFoundation
__exceptionPreprocess
1
libobjc.A.dylib
objc_exception_throw
2
Foundation
_userInfoForFileAndLine
3
UIKitCore
-[_UITextKitTextPosition compare:]
4
UIKitCore
-[UITextInputController comparePosition:toPosition:]
5
UIKitCore
-[UITextView comparePosition:toPosition:]
6
UIKitCore
-[UITextPasteController _clampRange:]
7
UIKitCore
__87-[UITextPasteController _performPasteOfAttributedString:toRange:forSession:completion:]_block_invoke
8
UIKitCore
__87-[UITextPasteController _performPasteOfAttributedString:toRange:forSession:completion:]_block_invoke.177
9
UIKitCore
-[UITextInputController _pasteAttributedString:toRange:completion:]
10
UIKitCore
-[UITextPasteController _performPasteOfAttributedString:toRange:forSession:completion:]
11
UIKitCore
__49-[UITextPasteController _executePasteForSession:]_block_invoke
12
libdispatch.dylib
_dispatch_call_block_and_release
13
libdispatch.dylib
_dispatch_client_callout
14
libdispatch.dylib
_dispatch_main_queue_callback_4CF
15
CoreFoundation
__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
16
CoreFoundation
__CFRunLoopRun
17
CoreFoundation
CFRunLoopRunSpecific
18
GraphicsServices
GSEventRunModal
19
UIKitCore …
Run Code Online (Sandbox Code Playgroud)

uitextview uitextviewdelegate ios ios15

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