我可以通过长按来更新标签的值吗 - iOS

Posted

技术标签:

【中文标题】我可以通过长按来更新标签的值吗 - iOS【英文标题】:Can i update value of label by long press on it - iOS 【发布时间】:2014-04-24 08:26:33 【问题描述】:

我在 iPhone ios7 设备上使用 Xcode 5 编写了一个简单的应用程序。 我有一个以 +/- 按钮递增的标签,但我想为用户提供将他的号码插入此标签的选项。 我怎么能用长按识别器做到这一点? 谢谢。

【问题讨论】:

如果您希望 UITextView 可编辑,您必须使用它。 我试过了,我有一个输入数字后不会消失的键盘。 当您在文本视图之外点击时,您是否希望关闭键盘? 在我按下键盘上的完成后 【参考方案1】:

使用UILongPressGestureRecognizerUITextView

UILongPressGstureRecognizer 属性添加到您的视图控制器:

@property UILongPressGestureRecognizer *gestureRecognizer;

您需要声明您的视图控制器符合UITextViewDelegateUIGestureRecognizerDelegate 协议:

@interface ViewController : UIViewController<UITextViewDelegate, UIGestureRecognizerDelegate>

viewDidLoad:

self.textView.editable = NO;
self.textView.delegate = self;
self.gestureRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(textViewLongPressed:)];
self.gestureRecognizer.delegate = self;
[self.textView addGestureRecognizer:self.gr];

这是长按文本视图时会调用的方法:

-(void) textViewLongPressed:(UILongPressGestureRecognizer *)sender

    self.textView.editable = YES;
    [self.textView becomeFirstResponder];

UIGestureRecognizerDelegate实现这个方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

    if (self.gestureRecognizer == gestureRecognizer)
        return YES;
    
    return NO;

当你完成编辑文本视图时

-(void) textViewDidEndEditing:(UITextView *)textView

    self.textView.editable = NO;

按下回车键时关闭键盘:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

    if ([text isEqualToString:@"\n"])
        [textView resignFirstResponder]; // or [textView endEditing:YES]

    return YES;

【讨论】:

1.键盘没有消失 2.我有一个警告:从不兼容的类型'GoalsSetUpViewController *const __strong'分配给'id' 如果我没有输入数字或在视图中按另一个按钮,可以关闭键盘吗? 如果我第二次长按键盘没有出现 不,但是如果你在按下按钮时在文本视图上调用resignFirstResponder,它将被关闭。 谢谢,为什么第二次按下没有键盘?

以上是关于我可以通过长按来更新标签的值吗 - iOS的主要内容,如果未能解决你的问题,请参考以下文章

我可以从后面的 C# 代码更新 WPF 绑定的值吗?

ExtJS 3.4 - 有 xtype: 'displayfield' 显示更新的值吗?

禁止H5在移动端(ios/安卓)a标签长按弹出路径

[ 视频 ] iPhone上 Safari 长按的小技巧你知道多少

我可以保存文本框的值吗? [复制]

JavaScript 的 Fetch 可以用来更新 Rails 控制器中的参数值吗?