我可以通过长按来更新标签的值吗 - 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】:使用UILongPressGestureRecognizer
和UITextView
。
将UILongPressGstureRecognizer
属性添加到您的视图控制器:
@property UILongPressGestureRecognizer *gestureRecognizer;
您需要声明您的视图控制器符合UITextViewDelegate
和UIGestureRecognizerDelegate
协议:
@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'分配给'idresignFirstResponder
,它将被关闭。
谢谢,为什么第二次按下没有键盘?以上是关于我可以通过长按来更新标签的值吗 - iOS的主要内容,如果未能解决你的问题,请参考以下文章
ExtJS 3.4 - 有 xtype: 'displayfield' 显示更新的值吗?