Gar*_*ett 57 iphone uitableview didselectrowatindexpath ios
我有一个UITableView
作为我的子视图UIScrollVIew
,这是我控制的主视图MainViewController
.
在MainViewController.h中
@interface MainViewController : UIViewController <UIGestureRecognizerDelegate, UITableViewDelegate, UITableViewDataSource>
// other stuff here...
@property (weak, nonatomic) IBOutlet UITableView *myTableView;
Run Code Online (Sandbox Code Playgroud)
在MainViewController.m中
@synthesize myTableView;
// other stuff here...
- (void)viewDidLoad {
myTableView.delegate = self;
myTableView.datasource = self;
}
// other stuff here...
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"listAttributesSegue" sender:self];
}
Run Code Online (Sandbox Code Playgroud)
我知道didSelectRowAtIndexPath
没有被调用,因为我已经在方法本身和它内部的代码行上设置了断点,并且都没有被调用.我也知道数据源工作正常,因为我有其他功能可以在运行时修改单元格,并且它们工作正常.我使用最新的Xcode和iOS 5.0设置作为开发目标.我搜索并搜索了一个答案.有人有主意吗?
编辑:
我找到了答案.我UITapGestureRecognizer
有一套myTableView的superView.这超出了选择呼叫.相信任何人都认为可能是它.在我将其标记为正确之前,您的答案已被删除.
编辑2:
很多人一直在评论这个,所以我会分享它.如果您遇到此问题,只需设置myGestureRecognizer.cancelsTouchInView
为false
,一切都应该正常工作.
Gar*_*ett 288
我找到了答案.我为myTableView的superView设置了UITapGestureRecognizer.这超出了选择呼叫.相信任何人都认为可能是它.在我将其标记为正确之前,您的答案已被删除.
将cancelsTouchesInView
属性设置为NO
手势识别器,以允许表视图拦截事件.
Kir*_*hav 12
针对Swift 3进行了更新:
如果您在代码中使用UITapGestureRecognizer: - #Swift 3 使用下面的代码行:
extension YourViewController{
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(YourViewController.dismissKeyboard))
view.addGestureRecognizer(tap)
tap.cancelsTouchesInView = false
}
func dismissKeyboard() {
view.endEditing(true)
}
}
Run Code Online (Sandbox Code Playgroud)
如何调用: - 在ViewDidLoad()中
self.hideKeyboardWhenTappedAround()
Run Code Online (Sandbox Code Playgroud)
A. *_*cox 10
你的问题是区分大小写的.你的代码:
- (void)tableVIew:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath {
Run Code Online (Sandbox Code Playgroud)
应该
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath {
Run Code Online (Sandbox Code Playgroud)
您是否为具有相同名称的tableview定义了实例变量.如果不是那么可能是这个问题 -
_myTableView.delegate = self;
_myTableView.datasource = self;
Run Code Online (Sandbox Code Playgroud)
要么-
self.myTableView.delegate = self;
self.myTableView.datasource = self;
Run Code Online (Sandbox Code Playgroud)
我的解决方案是:
设置cancelsTouchesInView
为No
任何tapGesture
我发现在我的自定义单元格中, userInteractionEnable
设置为
NO
,只需删除userInteractionEnable = No
并解决问题.
归档时间: |
|
查看次数: |
42730 次 |
最近记录: |