【问题标题】:Remove/Update an element from NSMutableArray when User press backspace in UITextField当用户在 UITextField 中按退格键时,从 NSMutableArray 中删除/更新元素
【发布时间】:2019-04-08 06:31:05
【问题描述】:

我正在使用一个第三方库HashtagMentionController。这是我使用的方法

- (void) hashtagMentionController:(HashtagMentionController *)hashtagMentionController onMentionWithText:(NSString *)text range:(NSRange)range {
    if ([text isEqualToString:@""]) {
        if ([self.arrFinalUUID count] < 1) {
            self.userListView.hidden = FALSE;
            [self.txtNotes resignFirstResponder];
            self.replaceRange = range;
            self.matchedNames = [[self.names filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
                return [evaluatedObject rangeOfString:text].location != NSNotFound;
            }]]mutableCopy];
            self.matchedNames = names;
            [self.tableHashtag reloadData];
        } else {
            [self presentViewController:[Common alertWithTitle:NSLocalizedString(@"Alert", @"Message") withMessage:NSLocalizedString(@"You can not select more than 1 user", @"Message") preferredStyle:UIAlertControllerStyleAlert] animated:YES completion:NULL];
        }
    } else {

       NSLog(@"backspace pressed");
       }
}  

当用户按下@时,我在 UITextView 中添加了这个方法。
现在我希望用户只添加一个名称是文本字段。当用户添加第二个时我会显示一个警报,但是当我按下退格键并删除所有文本时,此方法存在问题,但该数组中仍然存在一个值。

所以我想在这个方法中处理退格(当没有用户时我想允许用户删除旧数组并添加新值)
如果有人需要更多信息,我可以更新我的问题。

提前致谢。

【问题讨论】:

    标签: ios objective-c nsmutablearray


    【解决方案1】:

    使用此代码,您可以检测退格:

    const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
    int isBackSpace = strcmp(_char, "\b");
    
    if ([self.arrFinalUUID count] < 1) {
        if (isBackSpace == -8) {
            NSLog(@"Backspace was pressed"); // So you can allow the user to remove an old array.
        }
    }
    

    您只需使用isBackSpace 更改您的条件。如果您需要更多信息,请告诉我。

    希望此代码对您有所帮助。

    【讨论】:

    • @Mihir Oza 你能看看这个答案,如果你需要我的更多帮助,请告诉我。谢谢
    【解决方案2】:

    我不完全了解您的要求,但是到目前为止,我认为您可以使用UITextField 的委托方法之一textField:shouldChangeCharactersInRange:replacementString: 通过使用此委托方法,您可以访问您实时键入的每个字符。换句话说,只有单个字符,您才能知道键盘上按下了哪个键。

    有关此方法的更多信息,请转到 here 获取文档。

    为了检测空格键和退格键,我使用以下代码:

    -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        //Add this condition if you need to know about a specified text field.
        if(textField==yourTextField)
        {                   
            NSLog(@"Tapped key is:%@",string);
            if([string isEqualToString:@" "])
            {
                NSLog(@"Spacebar tapped.");
            }
            else if([string isEqualToString:@""]||(string.length==0))
            {
                NSLog(@"Backspace tapped.");
            }            
        }
        return YES;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多