我怎么知道手指何时宕机以及何时摔倒UITapGestureRecognizer?
该文件说我应该只处理UIGestureRecognizerStateEnded的自来水,因此表示有UIGestureRecognizerStateBegin当手指下降,但我得到的是UIGestureRecognizerStateEnded.
我用来注册识别器的代码是:
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]
Run Code Online (Sandbox Code Playgroud) 在我的程序中,我有一个UITapGestureRecognizer我初始化的initWithTarget: action:.我已经通过一个选择器来调用一个名为的方法PlanetTapped: (UIImageView *)aPlanet.这会调用方法,但我想知道如何将参数传递给action:你performSelector: withObject.这是不可能的?允许你向参数UIGestureRecognizer选择器发送参数是有意义的.任何帮助表示赞赏.
已经搜索了一些可能的修复,但都没有解决我的问题.
我一直在点击uitableview中的单元格,而不是单击其中的按钮.
这是我的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.backgroundColor = [UIColor blackColor];
UIView *v = nil;
NSArray *array = [cell subviews];
for (v in array) {
NSLog(@"%@",[v class]);
if( [v isKindOfClass:[UIView class]] ){
[v removeFromSuperview];
}
}
//tb
if (tableView == self.tb) {
v = [[UIView alloc] initWithFrame: CGRectMake(0, 0, self.tb.bounds.size.width, 120.0)];
if([feeds count]>0){
UIImageView *box=[[UIImageView …Run Code Online (Sandbox Code Playgroud) 我想在一个点击之外的任何地方解雇UIAlertView.我想在没有任何按钮的情况下显示UIAlertView.
我这里有标准的UIAlertView代码,但如果有可能,我需要输入如何解除它.
有了UITouch吗?使用UITapGestureRecognizer?
谢谢.
编辑:
在viewDidLoad中
alertview初始化,名称为"alert"
if (alert)
{
emptyview = [[UIView alloc]initWithFrame:CGRectMake(0,0,320,480)];
emptyview.backgroundColor = [UIColor clearColor];
[self.view addSubview:emptyview];
[emptyview addSubview:alert];
NSLog (@"emptyview is there!");
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[emptyview addGestureRecognizer:singleTap];
[singleTap release];
}
Run Code Online (Sandbox Code Playgroud)
但是这个空视图根本没有响应,它没有响应handleSingleTap选择器,我重写了一下:
-(void)handleSingleTap:(UITapGestureRecognizer *)sender{
[alert dismissWithClickedButtonIndex:0 animated:YES];
[emptyview removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)
我需要这个空视图在显示警报时处于警戒状态然后我可以通过一次点击来解除警报.
我试过了:
if (alert)
{
emptyview = [[UIView alloc]initWithFrame:CGRectMake(0,0,320,480)];
emptyview.backgroundColor = [UIColor clearColor];
[self.view addSubview:emptyview];
[emptyview addSubview:alert];
NSLog (@"emptyview is there!");
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[alert addGestureRecognizer:singleTap];
[singleTap release];
} …Run Code Online (Sandbox Code Playgroud) 因此,如果没有点击链接,我想检测UIWebView上的点击.我该怎么做呢?我知道:
- (BOOL)webView:(UIWebView *)webview shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
Run Code Online (Sandbox Code Playgroud)
每次单击一个链接时调用.但是我怎么知道它是否是UIWebView上的一个非链接?我一直在寻找网络,我找到的最接近的是这个.但是,这并不能告诉我水龙头是否在链接上
我正在使用下面的代码
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(processTap)];
- (void) processTap
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
但我需要向processTap函数发送数据.反正有没有这样做?
我已经搜索了这个问题的解决方案,但在我的情况下找不到任何似乎可以解决它的问题.我从UITapGestureRecognizer获得了上述异常.
这是简化的代码:
import UIKit;
class ViewController : UIViewController, UIScrollViewDelegate
{
@IBOutlet weak var scrollView:UIScrollView!;
var imageView:UIImageView!;
override func viewDidLoad()
{
super.viewDidLoad();
... set up imageView/scrollView here ...
let doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "onScrollViewDoubleTapped");
doubleTapRecognizer.numberOfTapsRequired = 2;
doubleTapRecognizer.numberOfTouchesRequired = 1;
scrollView.addGestureRecognizer(doubleTapRecognizer);
}
func onScrollViewDoubleTapped(recognizer:UITapGestureRecognizer)
{
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉这段代码有什么问题吗?对我来说似乎都是正确的.我怀疑它与将ViewController指定为scrollView的委托(或反之亦然)有关?但是,ViewController被设置为scrollView的委托.但也许是其他导致这个错误的东西?
我有一个相同的问题这一个,但因为我是新来的节目,只有真正了解我迅速在想,如果有人可以给我它在迅速等价的.或者指出我可能已经错过的另一个问题是快速的.
谢谢!
更新:这是我的视图控制器的基本要点,因为我已经削减了一些脂肪,只处理相关主题.重申问题.直到我点击我的'doneButton'来运行createClient()函数并导航回客户端页面来编辑新创建的客户端,点击手势才能解除键盘.
import UIKit
import CoreData
import Foundation
class NewClientTableViewController: UITableViewController, UINavigationControllerDelegate, UITextFieldDelegate {
let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext
@IBOutlet weak var nameTxt: UITextField!
@IBOutlet weak var ageTxt: UITextField!
@IBOutlet weak var phoneTxt: UITextField!
@IBOutlet weak var emailTxt: UITextField!
@IBOutlet weak var heightTxt: UITextField!
@IBOutlet weak var notesTxt: UITextView!
var client: Client? = nil
override func viewDidLoad() {
super.viewDidLoad()
if client != nil {
nameTxt.text = client?.name
ageTxt.text = client?.age
heightTxt.text = client?.height
phoneTxt.text = client?.phone …Run Code Online (Sandbox Code Playgroud) 在一个内部UITableViewCell,我试图实现一个包含图像和文本的按钮.
似乎标准UIButton无法实现这一点.所以我创建了一个UIView包含a UIImageView和a的UILabel.
您可以在右侧看到实现,"跟随行程"按钮("+"是UIImageView,"跟随行程"是UILabel)
我现在正试图使这样UIView(即按钮)可点击,但我找不到方法.
这是我的实现,但它不起作用:
class StationsIntroHeader: UITableViewCell {
@IBOutlet weak var bigButton: UIView!
override func awakeFromNib() {
super.awakeFromNib()
let tap = UITapGestureRecognizer(target: self, action: Selector("followTrip:"))
bigButton.addGestureRecognizer(tap)
}
func followTrip(sender:UITapGestureRecognizer) {
print("tap working")
}
}
Run Code Online (Sandbox Code Playgroud)
我已经确定了启用用户交互是ON上UIView和关上都UIImageView和UILabel
我正在构建一个应用程序,用于跟踪大学课程的阅读作业.每个ReadingAssignment都包含一个Bool值,表示读者是否已完成阅读作业.ReadingAssignments被收集到WeeklyAssignment数组中.我希望用户能够触摸标签并显示复选标记,并将分配显示为已完成.我希望这个触摸也将.checked属性更新为true,这样我就可以持久保存数据.所以,我试图让gestureRecognizer调用labelTicked()方法.这适用于打印到控制台.但是,当我尝试传入赋值参数时,它会编译,但在触摸时会因"无法识别的选择器"错误而崩溃.我已经阅读了我在这里可以找到的每个主题,并且没有找到解决方案.他们都说":"表示带参数的选择器,但仍然没有.你能看出我做错了什么吗?
func configureCheckmark(cell: UITableViewCell, withWeeklyAssignment assignment: WeeklyAssignment) {
let checkLabel = cell.viewWithTag(1002) as! UILabel
checkLabel.userInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("labelTicked:assignment"))
checkLabel.addGestureRecognizer(gestureRecognizer)
}
@objc func labelTicked(assignment: WeeklyAssignment) {
assignment.toggleCheckmark()
if assignment.checked {
label.text = "??"
} else {
label.text = ""
}
}
Run Code Online (Sandbox Code Playgroud)
我也想传递UILabel checkLabel,所以我可以在labelTicked()方法中更新它.谢谢你的帮助.
ios ×8
selector ×4
swift ×4
uitableview ×3
iphone ×2
objective-c ×2
methods ×1
uialertview ×1
uibutton ×1
uitouch ×1
uiview ×1
uiwebview ×1