我有一个简单的UIViewController派生控制器,它有UITextFields.
同样使用IB,我放置了一个UIToolbar和两个UIBarButtonItems.我按Ctrl-拖动以向按钮添加操作.
- (IBAction)cancel:(id)sender { ... }
- (IBAction)save:(id)sender { ... }
Run Code Online (Sandbox Code Playgroud)
如果我运行代码,则会调用操作.
问题:我想在背景上实现resignFirstResponder范例,所以我在根视图上添加了一个UITapGestureRecognizer:
- (void)viewDidLoad {
...
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
}
Run Code Online (Sandbox Code Playgroud)
当我有手势识别器时,不会调用UIBarButtonItems的动作
我怎么能双管齐下?
感谢您的任何解释,可以帮助我实现这一点.
我有这个代码:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapResponse)];
singleTap.numberOfTapsRequired = 1;
[_textView addGestureRecognizer:singleTap];
Run Code Online (Sandbox Code Playgroud)
这将对整个UITextView作出反应,但是是否可以更改它以便它只响应UITextView中字符串的某个部分被点击?比如一个URL?
我有UITableView几个UITableViewCells在里面.因为我只有几个单元格,所以表格视图的某个区域没有被单元格覆盖.我想在点击空白区域时做点什么.
我尝试UITapGestureRecognizer在表视图上添加一个.它检测到空区域的敲击,但随后细胞无法响应敲击.我尝试在表视图的超级视图上添加点击手势识别器,但结果是一样的.
必须有办法做到这一点,但我还不能弄明白.有没有办法实现我想做的事情?
我已将以下代码添加到我的viewDidLoad中
UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(hideKeyBoard)];
[self.view addGestureRecognizer:tapGesture];
Run Code Online (Sandbox Code Playgroud)
以及我的.m文件中的某个位置
-(void)hideKeyBoard {
[theEditableTextField resignFirstResponder];
[theEditableTextView resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
在文本字段/视图外部点击时,这种方法可以很好地消除键盘,但是我已经添加了表格视图,我需要能够选择一个城镇,并且无法使用此代码选择一行。
在文本框或文本视图之外点击但如何仍能对表视图使用didSelectRow时,如何禁用键盘?
UITapGestureRecognizer与UIPickerView无法正常工作.为什么?
class someVC: UIViewController, UITapGestureRecognizerDelegate
override func viewDidLoad() {
let tap = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
self.pickerView.addGestureRecognizer(tap)
tap.delegate = self
}
func dismissKeyboard() {
textField.resignFirstResponder()
}
Run Code Online (Sandbox Code Playgroud) 我的UI上有多个按钮,我想根据不同的点击类型执行不同的功能,
对于我来说,只需轻按一下即可完成操作,这是一个IBAction,所有四个按钮均已连接到IBAction,但对于其他类型的点击,我却无法控制
我了解我需要使用点击手势识别器,但是无法将其设置为多个UIButton,
这是我想做的事的例子
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var Label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func ButtonSingleTap(sender:UIButton!) {
let ButtonNumber: String = String(sender.tag)
Label.text = "Button " + ButtonNumber + " is Single Tapped"
}
func ButtonDoubleTap(sender:UIButton!) {
let ButtonNumber: String = String(sender.tag) …Run Code Online (Sandbox Code Playgroud) uibutton uitapgesturerecognizer uilongpressgesturerecogni xcode7 swift2
我试图覆盖UITapGestureRecognizer的自定义子类中的touchesBegan。代码如下。我是从这里得到的:如何加快对双击的识别?。这是公认的答案,但我遇到一个错误:方法未从其超类覆盖任何方法。我已经检查过了,这似乎确实是touchesBegan的签名。救命?
import UIKit
class UIShortTapGestureRecognizer: UITapGestureRecognizer {
let tapMaxDelay: Double = 0.3
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
super.touchesBegan(touches, withEvent: event)
delay(tapMaxDelay) {
// Enough time has passed and the gesture was not recognized -> It has failed.
if self.state != UIGestureRecognizerState.Ended {
self.state = UIGestureRecognizerState.Failed
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个模态导航页面,其中的图像就像一个按钮;
<Image Source ="share.png" HeightRequest="32" WidthRequest="32">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="On_Share" />
</Image.GestureRecognizers>
</Image>
Run Code Online (Sandbox Code Playgroud)
而背后的方法;
async void On_Share(object sender, EventArgs e)
{
if (CrossConnectivity.Current.IsConnected)
{
var message = "Share this";
var title = "Share";
await CrossShare.Current.Share(new ShareMessage { Text = message, Title = title}, new ShareOptions { ExcludedUIActivityTypes = new[] { ShareUIActivityType.PostToFacebook } });
}
else
{
NoInternetLabel.IsVisible = true;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试单击共享图像/按钮时出现错误.我已将断点放入On_Share方法的第一行并且它们没有被击中.
Warning: Attempt to present <UIActivityViewController: 0x141b60f70> on <Xamarin_Forms_Platform_iOS_ModalWrapper: 0x1419a0920> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)
请注意这在Android中运行良好,我只看到iOS中的问题.我不确定发生了什么 - …
我在TableViewCell上有故事板segue,我用它在单击单击didSelectRowAt方法中转移到另一个VC .现在我做了双击TapGestureRecognizer以处理细胞上的轻微敲击.问题是,单击时,segue正在执行,双击不起作用.单击单元格,双击可正常工作.到目前为止我的代码可能以某种方式解决这个问题吗?或者我需要删除segue并单独处理单击和双击.谢谢你的任何建议
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(handleDoubleTap))
doubleTap.numberOfTapsRequired = 2
view.addGestureRecognizer(doubleTap)
}
func handleDoubleTap(recognizer: UIGestureRecognizer) {
let p = recognizer.location(in: tableView)
let indexPath = tableView.indexPathForRow(at: p)
if let _ = indexPath {
tableView.deselectRow(at: indexPath!, animated: true)
update(index: (indexPath?.row)!, isFinished: true)
}
print ("doubke")
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "showSingleTask") …Run Code Online (Sandbox Code Playgroud) 我不得不创建一个新线程bcoz它让我发疯,所有其他在线答案都完全一样.我已经无数次地完成了这件事,但我无法看到我为生命而失踪的东西.我正在使用"测试"视图控制器只是为了让轻敲手势工作,但它根本不起作用...我相当确定我正确设置它,因为这是我一直在实现它的方式过去:(是的,我已经选中了isUserInteractionEnabled的方框).我甚至在一个不同的viewcontroller上以这种方式实现它,它正在工作......
class TestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.addGestureRecognizer(tap)
}
let tap = UITapGestureRecognizer(target: self, action: #selector(wasTapped))
@objc func wasTapped() {
print("tapped")
}
Run Code Online (Sandbox Code Playgroud)
}
我也尝试将参数添加到wasTapped:
@objc func wasTapped(gestureRecognizer: UITapGestureRecognizer) {
print("tapped")
}
Run Code Online (Sandbox Code Playgroud) ios ×5
swift ×4
uitableview ×2
nsstring ×1
objective-c ×1
share ×1
swift2 ×1
swift3 ×1
uibutton ×1
uipickerview ×1
uitextview ×1
xamarin.ios ×1
xcode7 ×1